我打开了之前的票证 ( Deploying existing WAR to embedded Jetty ),指出我在将 WAR(包含 JSP 页面)部署到 Jetty 时遇到问题。看来我接受的解决方案不起作用(我被困住了,当时我很高兴我得到了一个不同的异常)。
所以我得到了以下异常:
An error occurred at line: [52] in the generated java file: [/tmp/embedded-jetty-jsp/jsp/org/apache/jsp/WEB_002dINF/jsp/MainLayout_jsp.java]
Syntax error on token "<", ? expected after this token
有人建议我从 WAR 中删除 jSTL 和标准 JAR。我这样做了,并将它们添加到类路径中(但在 WAR 之外)。
现在我得到以下内容
javax.servlet.ServletException: org.apache.jasper.JasperException: /WEB-INF/jsp/MainLayout.jsp (line: 11, column: 0) The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application
通常这意味着使用较旧的 JSTL(其中应用 http://java.sun.com/jSTL/core
URI)。我只使用 jSTL-1.2.jar,所以在我的例子中,这意味着找不到 jSTL JAR。
因此,我使用单个类来启动 Jetty,并将 JAR(如 JSTL 和标准 JAR)添加到包含该单个类的 JAR 的 MANIFEST 文件中。
所有其他信息都可以在上一张票中找到。
我尝试了几种方法,所以现在陷入困境。
知道会出什么问题吗?
谢谢,
五、
最佳答案
请小心放置 jSTL.jar 文件的位置以及声明 WebAppContext 自己的 ClassLoader 的方式。这很重要。
TldScanner 需要一堆东西,如果其中任何一个不正确,则找不到标记库(包括 jSTL 标准标记库)
参见:
关于java - Jetty - 使用 JSP 将 WAR 部署到嵌入式 Jetty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48867353/