2013-11-15 5 views
1

Я пытаюсь скомпилировать и запустить java-файлы из java-кода. У меня есть скомпилированный класс java, и с этим попробуйте скомпилировать Java-код. ниже - это мой код, но я не вижу файл * .class в любом бине (в папке проекта eclipse out put) или в исходном месте. Где мой файл * .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

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

ответ

0

Test его с файлом у вас есть в том же каталоге, что и ваш прекрасный 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

также в качестве альтернативы вы можете использовать Java 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 Строка classLoc = "C: // Users // c0328502 // Документы // Рабочая область // Java 1.7 // пакет // com // java // Compileable.java"; Процесс p = Runtime.getRuntime(). Exec ("javac" + classLoc); ProcessBuilder pb = new ProcessBuilder ("javac", classLoc); – CHowdappaM

+0

uhmm Я думаю, вам нужно сменить каталог в каталог, содержащий файл .java. или просто можно просто поместить файл jar в каталог, содержащий файл .java. это должно работать – Jeremy

Смежные вопросы