gpt4 book ai didi

java-compiler-api - Java 编译任务和类路径选项不起作用

转载 作者:行者123 更新时间:2023-12-05 01:02:17 24 4
gpt4 key购买 nike

我试图创建一个类来编译一些我将在运行时创建的 .java,但我无法让它正常工作。

这是我的代码

    File bin = new File(args[args.length-1]);

System.setProperty("java.home", "C:\\Program Files\\Java\\jdk1.7.0_60");
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();

StandardJavaFileManager standardJavaFileManager = compiler.getStandardFileManager(null, null, null);

try {
standardJavaFileManager.setLocation(StandardLocation.CLASS_OUTPUT, Arrays.asList(bin));
} catch (IOException e) {
System.err.println("Invalid bin directory");
e.printStackTrace();
}

List<String> options = new ArrayList<String>();

options.add("-Xlint:unchecked");
options.add("-classpath");
options.add("e:\\ParentProject.jar");

System.out.println(options);

CompilationTask compilationTask = compiler.getTask(null, standardJavaFileManager, null, options, null, standardJavaFileManager.getJavaFileObjectsFromFiles(archives));

compilationTask.call();

我正在尝试编译一个 Son.java,它扩展了 ParentProject.jar 中的一个类,但它不起作用,即使使用“-classpath”标志也是如此。但是,如果我将 jar 添加到编译器项目的构建路径中,它就可以工作(并且不需要类路径标志)。这是正常行为吗?

这会导致另一个问题。当我尝试在 Tomcat 服务器上运行的项目中使用这段代码时,即使使用 WEB-INF/lib 中的 jars,我也无法让它工作。

最佳答案

您可以将 JAR 添加到您的类路径中,如下所示:

standardJavaFileManager.setLocation(
StandardLocation.CLASS_PATH,
Arrays.asList( new File ( "path/to/ParentProject.jar" ) )
);

关于java-compiler-api - Java 编译任务和类路径选项不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26733908/

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