具有依赖类的JavaCompiler

时间:2014-01-08 13:04:58

标签: java compiler-construction

我正在使用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;
}

2 个答案:

答案 0 :(得分:0)

您可以在类路径上指定多个文件/类。只需用冒号或分号分隔它们,具体取决于您的平台。

您是否已验证仅使用javac命令进行编译?如果这样做,那么它必须是你的过程中的东西,而不是类路径。

答案 1 :(得分:0)

特定编译类的类路径可以作为

给出
-classpath "full_folder_Path_Till_Package"

前:

dynamicClassPath = "C:/work/sample1/core" 

在核心目录中,您将在该依赖类中包含文件夹“com”。