2013-11-15 3 views
1

java 코드에서 Java 파일을 컴파일하고 실행하려고합니다. 컴파일 된 Java 클래스가 있고이를 사용하여 Java 코드를 컴파일하십시오. 아래 코드 는 내 코드이지만 bin 폴더 (eclipse 프로젝트 폴더에 넣음) 또는 소스 위치에 * .class 파일이 표시되지 않습니다. 컴파일러가 성공하면 내 * .class 파일은 어디로갔습니다. 또는 내 코드에 어떤 문제가 있습니까? 2 가지 방법으로 아래의 시도 : 파일을다른 java 파일을 컴파일하는 컴파일러

public class CompilerClass { 

    public static void main(String[] args) throws Exception { 

      Process p = Runtime.getRuntime().exec("javac com.java.Compileable.java"); 
      ProcessBuilder pb = new ProcessBuilder("javac", "com.java.Compileable.java"); 
    } 
} 
+0

IDE로 컴파일하는 경우 논점은 무엇이라고 말합니까? 커맨드 라인에서 컴파일하는 경우 컴파일 한 디렉토리와 동일한 디렉토리에서 .class 파일을 볼 수 있습니다 (javac CompilerClass.java보다 좀 더 멋진 것을하지 않는 한). – Makoto

+0

당신이하는 방식에는 아무런 문제가 없지만 API는 이미 알고 있거나 생성해야 할 수도있는 다양한 기능을 이미 제공하고 있습니다. 따라서 이것이 이미 존재하는 해결책이므로 선택할 수 있습니다. –

+0

[this] (http : // stackoverflow .com/questions/10093290/run-a-java-file-using-processbuilder) –

답변

0

테스트 당신이 같은 디렉토리에있는 나를 위해 당신의 CompilerClass

public static void main(String[] args) throws Exception { 

     Process p = Runtime.getRuntime().exec("javac SomeClass.java"); 
     ProcessBuilder pb = new ProcessBuilder("javac", "SomeClass.java"); 
} 

작품 잘한다. SomeClass.java 당신이 파일의 위치를 ​​명시해야 CompilerClass

명령 줄에서 란

2

아니라 당신이 자바 컴파일러 API를

package javacompiler; 
import javax.tools.JavaCompiler; 
import javax.tools.ToolProvider; 
public class COmpilerHello { 
    public static void main(String[] args) 
    { 
     String s="C:/Users/MariaHussain/Desktop/hussi.java"; 
     JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); 
     int result = compiler.run(System.in,System.out,System.err,s); 
     System.out.println("Compile result code = " + result); 
    } 
} 
+0

이것은 효과가 있습니다. 내 코드에서 어떤 제안이 잘못 되었나요? – CHowdappaM

0

를 사용할 수있는 대안으로 같은 디렉토리에있는. 이런 식이어야합니다.

public static void main(String[] args) throws Exception { 

     Process p = Runtime.getRuntime().exec("javac C://JavaProject//SomeClass.java"); 
     ProcessBuilder pb = new ProcessBuilder("javac", "C://JavaProject//SomeClass.java"); 
} 
+0

나는 이것을 시도했다. \t String classLoc = "C : // Users // c0328502 // Documents // Workspace // Java 1.7 // package // com // java // Compileable.java"; 프로세스 p = Runtime.getRuntime(). exec ("javac"+ classLoc); ProcessBuilder pb = 새 ProcessBuilder ("javac", classLoc); – CHowdappaM

+0

어쩌면 .java 파일이 들어있는 디렉토리로 디렉토리를 변경해야한다고 생각합니다. 또는 jar 파일을 .java 파일이 들어있는 디렉토리에 넣을 수 있습니다. 이게 효과가있다. – Jeremy

관련 문제