gpt4 book ai didi

java - System.getProperty ("java.class.path") 不显示 "WEB-INF/lib"和包含的 jar

转载 作者:行者123 更新时间:2023-11-29 06:18:01 25 4
gpt4 key购买 nike

String CompilePath = "abc.java";
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
String classpath = System.getProperty("java.class.path");
System.setProperty("java.class.path", classpath + ";" + LocalMachine.home + "WebContent/WEB-INF/lib");
int result = compiler.run(null, null, null, CompilePath);

上面的代码在作为 JUnit 测试执行时运行良好,因为编译 abc.java 文件所需的所有 jars。但是当相同的代码作为服务器运行时,它无法找到所需的 jar 文件。 System.getProperty("java.class.path") 的输出是E:\apache-tomcat-7.0.4\bin\bootstrap.jar;E:\apache-tomcat-7.0.4\bin\tomcat-juli.jar;C:\Program Files\Java\jdk1.6.0 _21\lib\tools.jar

那么,我的问题是如何让编译器引用 WEB-INF/lib 目录中的 jar 文件?

最佳答案

您不能依赖于将 java.class.path 设置为任何特定内容。

Java 在启动包含您的 servlet 容器的整个 JVM 时建立此变量。由于它为许多不同的其他目的创建了许多不同的类加载器,因此它不会更改它。这不可以。整个过程java.class.path只有一个值,但是可以有很多不同的webapp,每个webapp里面确实有很多不同的类加载器。

您将需要自己的显式配置机制来传达此类编译内容的类路径,并使用 getRealPath 来构造路径名。

关于java - System.getProperty ("java.class.path") 不显示 "WEB-INF/lib"和包含的 jar ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4273039/

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