gpt4 book ai didi

java - 动态编译源文件时如何为JavaCompiler提供接口(interface)?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:56:22 24 4
gpt4 key购买 nike

我试图在运行时编译和加载一个类,但不知道该类的包。我知道该类应该符合接口(interface)和源位置(以及类名)。我正在尝试以下操作:

/* Compiling source */
File root = new File("scripts");
File sourceFile = new File(root, "Test.java");
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
compiler.run(null, null, null, sourceFile.getPath());

Test.java 文件看起来像

import foo.Itest;
public class Test implements Itest{
...
}

我从编译器中得到了一个cannot find symbol symbol : class Itest 错误。如何为编译器提供接口(interface)(已加载)以避免此错误?

[编辑 - 已解决]:错误来自于接口(interface)是 ITest 并且源引用了 Itest 接口(interface)。

最佳答案

compiler.run() 似乎在外部运行,需要设置类路径。您是否尝试使用最后一个参数 args 将合适的类路径设置传递给 run() 调用?也许这就是 ToolProvider.getSystemToolClassLoader() 的原因。

stackoverflow post也可能对您有所帮助。

关于java - 动态编译源文件时如何为JavaCompiler提供接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3447359/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com