我正在使用JavaCompiler編譯類。我有jar依賴項,我曾經在類路徑中給它,我有一個類(class1)文件直接相同,這是另一個類(class2)的依賴關係。具有相關類的Java編譯器
只需
Class1.class Class2.java
我想要編譯Class2.java,在Class2中有像
Class1.sayHi();
代碼當我編譯它說
error: cannot find symbol
如何在編譯Class2時包含Class1.class
我的編譯器代碼
String fileToCompile = classFile;
System.setProperty("java.home", RuntimeCompiler.getJDKPath());
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null);
Iterable<? extends JavaFileObject> compilationSource =
fileManager.getJavaFileObjects(fileToCompile);
List<String> optionList = new ArrayList<String>();
optionList.addAll(Arrays.asList("-classpath",dynamicClassPath));
try{
compiler.getTask(null, null, null, optionList, null, compilationSource).call();
return true;
}catch (Exception e) {
return false;
}
Classpath中的文件是否是Class1?僅僅因爲該文件中的代碼調用編譯並不意味着它被編譯器識別。 – 11684
不,如何在類路徑中包含Class1?我不知道要包含一個類文件。我給了像如下 C:/work/sample1/core/com/ExternalResoruceExcel.class –