1
我試圖創建一個類來編譯一些.java,我將在運行時創建,但是我無法讓它正常工作。Java編譯任務和類路徑選項不工作
這裏是我的代碼
File bin = new File(args[args.length-1]);
System.setProperty("java.home", "C:\\Program Files\\Java\\jdk1.7.0_60");
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
StandardJavaFileManager standardJavaFileManager = compiler.getStandardFileManager(null, null, null);
try {
standardJavaFileManager.setLocation(StandardLocation.CLASS_OUTPUT, Arrays.asList(bin));
} catch (IOException e) {
System.err.println("Invalid bin directory");
e.printStackTrace();
}
List<String> options = new ArrayList<String>();
options.add("-Xlint:unchecked");
options.add("-classpath");
options.add("e:\\ParentProject.jar");
System.out.println(options);
CompilationTask compilationTask = compiler.getTask(null, standardJavaFileManager, null, options, null, standardJavaFileManager.getJavaFileObjectsFromFiles(archives));
compilationTask.call();
我嘗試編譯擴展一類就是在ParentProject.jar一個Son.java,但它不能正常工作,甚至用「-classpath」旗。但是,如果我將jar添加到編譯器項目的構建路徑中,它將起作用(並且不需要classpath標誌)。這是正常的行爲?
而這導致了另一個問題。當我嘗試在Tomcat服務器上運行的項目中使用這段代碼時,即使使用WEB-INF/lib中的jar,我也無法使其運行。
我來到了週末前的這個相同的解決方案,而我又嘗試它,我不知道爲什麼它是如此很難找到這個選項 – 2014-11-18 16:58:58