我正在尝试使用Javax.tools.javacompiler编译一些代码,但是每次编译器都不认为该类使用的接口不是类路径的一部分时。

这些接口是调用编译器的应用程序的一部分,我尝试将.jar文件添加到javacompiler的类路径中,如下所示:

optionList.add(System.getProperty("java.class.path") + ";" + f.getAbsolutePath());

JavaCompiler.CompilationTask task = compiler.getTask(null, fileManager, diagnostics, optionList, null,
                compilationUnits);


我得到的错误是这样的:

plugins\Ping.java:6: error: cannot find symbol
public class Ping extends BaseRoute {
                          ^


由于找不到超类而导致了更多的问题。

我已经确保检查在调试模式下是否正确定义了文件“ f”,所以这不是问题。我也尝试通过io.asecta.restdb.*(我的包)将其添加到类路径中,但这也没有用。

先谢谢您的帮助。

最佳答案

如果您是从自己的jar文件进行编译,则java.class.path应该已经包含您的jar文件,因此无需通过f.getAbsolutePath()再次添加它,这不会造成伤害,但不是必需的。该代码对我来说绝对不错。您确定在要编译的代码中导入了“ BaseRoute”类吗?

关于java - javax JavaCompiler类路径问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34247712/

10-10 19:34