gpt4 book ai didi

java - 在 Windows 上使用 IntelliJ IDEA 生成的动态类路径时 JSP 编译失败

转载 作者:行者123 更新时间:2023-11-28 22:17:02 27 4
gpt4 key购买 nike

我有一个 Spring/MVC/Tomcat 网站项目,我正尝试使用 IntelliJ IDEA 运行它。因为我在 Windows 上运行,所以存在命令行大小限制,大型类路径超出了该限制。我使用 IntelliJ 的动态类路径功能,该功能将类路径放在 jar 文件中以缩短命令行。 Java-classpath <classpath.jar> 一起运行.

当我尝试查看页面时,JSP 编译失败并出现错误:

org.apache.jasper.JasperException: Unable to compile class for JSP: 

An error occurred at line: [-1] in the generated java file: [<removed>.java]
[javac] <removed>.java:11: error: package javax.servlet does not exist
[javac] import javax.servlet.*;
[javac] ^

我在调试中运行了它并进入了 java 编译的地方,发现了 javac使用的命令行。它被放在一起 org.apache.tools.ant.taskdefs.compilers.JavacExternal .我运行了 javac-verbose 命令自己,并注意到来自 search path for class files: 的依赖路径日志行显示如下:

C:\Users\<removed>\AppData\Local\Temp\file:\C:\Users\<removed>\lib\servlet-api-3.0.jar

请注意,绝对 URI 路径似乎被视为相对路径,导致路径无效。我相信这就是它无法正确编译的原因。

Intellij 生成的路径 jar 的 MANIFEST.MF列出带有绝对路径条目的类路径,如下所示:

file:/C:/Program%20Files/Java/jdk1.8.0_121/jre/lib/charsets.jar file:/C:/Program%20Files/Java/jdk1.8.0_121/jre/lib/deploy.jar [...]

这个问题在 Mac 上不会发生,使用动态类路径 jar(即使没有必要,因为命令行太长错误不会发生)所以我相信 Windows 路径或 IntelliJ 生成类路径 jar 的方式在 Windows 上搞乱了 JSP 编译。

此外,使用生成具有相对路径的路径 jar 的 Ant 构建任务也可以,但我有兴趣避免在此处使用 Ant。

我怎样才能让它发挥作用,或者我还需要调查什么才能找到根本原因?

最佳答案

这是一个 known bug in JDK .

Javac 错误地处理 list 类路径 header 中的绝对路径。在JDK9中已经修复。

关于java - 在 Windows 上使用 IntelliJ IDEA 生成的动态类路径时 JSP 编译失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43150009/

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