2012-06-04 27 views
12

.java dosyaları yazacak bir araç hazırlıyorum (umarım) bu dosyaları .class dosyalarına derleyin. Hepsi bir arada, kullanıcı çoklu .java dosyalarının yazıldığı bir dosya dizini seçer. Şimdi programın bu Java dosyalarını derlemesini istiyorum.0 Java içinden harici .java dosyalarını derleme

cevap

14

JavaCompiler arkadaşınız. Burada dokümantasyon here

Ve kod JRE gelen çalışıyorsa null olacak derleyici API

JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); 
DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<>(); 
StandardJavaFileManager fileManager = compiler.getStandardFileManager(diagnostics, null, null); 
Iterable<? extends JavaFileObject> compilationUnits = fileManager.getJavaFileObjectsFromStrings(Arrays.asList("YouFileToCompile.java")); 
JavaCompiler.CompilationTask task = compiler.getTask(null, fileManager, diagnostics, null, 
     null, compilationUnits); 
boolean success = task.call(); 
fileManager.close(); 
+0

Bunu denedim, ve mutlak bir yol ile "YouFileToCompile.java" yerini şimdi bir NullPointerException olsun: (null, null, teşhis) StandardJavaFileManager filemanager = compiler.getStandardFileManager; (sorun?) –

+0

"Derleyici" değişkeni "null" gibi görünüyor. Doğru bir Java kurulumuna sahip olduğunuzdan emin olun. Yardım için şuna bakın: http://www.java.net/node/688208 – GETah

+0

.java dosyası olmalı mı? Bir .txt dosyasında kodum varsa, hala çalışır mı? – JD9999

4

JavaCompiler kullanabilirsiniz nasıl bir örnek kontrol edin. tools.jar'u içeren bir JDK'ya ihtiyaç duyar.