我正在使用JavaCompiler编译一个类。我有jar依赖,我曾经在类路径中给它,我有一个类(class1)文件直接相同,这是另一个类(class2)的依赖。
简单地
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;
}
答案 0 :(得分:0)
您可以在类路径上指定多个文件/类。只需用冒号或分号分隔它们,具体取决于您的平台。
您是否已验证仅使用javac命令进行编译?如果这样做,那么它必须是你的过程中的东西,而不是类路径。
答案 1 :(得分:0)
特定编译类的类路径可以作为
给出-classpath "full_folder_Path_Till_Package"
前:
dynamicClassPath = "C:/work/sample1/core"
在核心目录中,您将在该依赖类中包含文件夹“com”。