微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Jetty 9 从 JDK1.8 迁移到 JDK11 - http://java.sun.com/jsp/jstl/fmt 在 JDK11 中无法解析 - fat exec jar

如何解决Jetty 9 从 JDK1.8 迁移到 JDK11 - http://java.sun.com/jsp/jstl/fmt 在 JDK11 中无法解析 - fat exec jar

我正在尝试按上述方式迁移。 Maven 项目。

我的 Jetty 版本在我的 pom.xml 中是 9.2.23.v20171218。

我正在 Ubuntu 20.04.2 LTS 上运行来自 Ubuntu 官方存储库的 JDK11。

我正在使用包含所有依赖项的胖可执行文件 .jar。 NetBeans 11.

我在 Windows 10 上使用 Netbeans 11 在 JDK1.8 上编译并部署到运行 JDK11 的 Ubuntu 服务器。

除了 Jetty 之外,所有东西都在 JDK11 上运行 - 如果我在 Windows 10 机器上运行 JDK1.8 中的 .jar,它可以从 Jetty 提供 .JSP 页面

如果我在 Linux 机器上运行 JDK1.8 中的 .jar,它可以从 Jetty 提供 .JSP 页面

如果我在 Linux 机器上运行 JDK11 中的 .jar,当我尝试在 Ubuntu 机器上的 Chrome 中查看 .JSP 页面时得到:

org.apache.jasper.JasperException: /index.jsp(1,68) PWC6188: The absolute uri: http://java.sun.com/jsp/jstl/fmt cannot be resolved in either web.xml or the jar files deployed with this application

很明显,JDK1.8 和 JDK11 之间在 Jetty 的 JSTL 机制方面存在重大差异。

那是什么?

我已经广泛地挖掘了我的问题是其他得到这个的人

org.apache.jasper.JasperException: /index.jsp(1,68) PWC6188: 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

虽然我得到

org.apache.jasper.JasperException: /index.jsp(1,68) PWC6188: The absolute uri: http://java.sun.com/jsp/jstl/fmt cannot be resolved in either web.xml or the jar files deployed with this application

“core”与“fmt” - 我找不到其他人得到“fmt” - 每个人都在相同的错误消息中得到“core”。

我可以从哪里开始寻找?

突出的问题是这仅适用于 JDK1.8 - 如果我在使用 JDK11 的 Windows 中尝试它,我会得到与使用 JDK11 在 Linux 上得到的完全相同的错误

所以我的问题是 JDK1.8 Jetty 代码来提供 JSP 页面,因为我实现它与 JDK11 不兼容。

我可以从哪里开始寻找?

错误字面意思是认的 JDK11 下

The absolute uri: http://java.sun.com/jsp/jstl/fmt cannot be resolved in either web.xml or the jar files deployed with this application

如何在JDK11中解析上述绝对URI?

它看起来像一个环境/JDK 设置。

我通过

在JDK11中运行JAR
/usr/lib/jvm/java-11-openjdk-amd64/bin/java -Djavax.net.ssl.trustStore=/usr/lib/jvm/java-11-openjdk-amd64/lib/security/cacerts -cp /usr/src/verdi/verdi-1.0-SNAPSHOT-jar-with-dependencies.jar verishare.App

这里有任何想法或基本概念错误吗? (我对 Java 很陌生。)

谢谢!

编辑:我的输出 mvn dependency:tree 由 Joakim Erdfelt 亲切建议:

[INFO] verishare:verdi:jar:1.0-SNAPSHOT
[INFO] +- org.slf4j:slf4j-simple:jar:1.7.21:compile
[INFO] |  \- org.slf4j:slf4j-api:jar:1.7.21:compile
[INFO] +- org.apache.logging.log4j:log4j-api:jar:2.11.0:compile
[INFO] +- org.apache.logging.log4j:log4j-core:jar:2.11.0:compile
[INFO] +- junit:junit:jar:4.11:test
[INFO] |  \- org.hamcrest:hamcrest-core:jar:1.3:test
[INFO] +- org.eclipse.jetty.websocket:websocket-client:jar:9.2.23.v20171218:compile
[INFO] |  +- org.eclipse.jetty:jetty-util:jar:9.2.23.v20171218:compile
[INFO] |  +- org.eclipse.jetty:jetty-io:jar:9.2.23.v20171218:compile
[INFO] |  \- org.eclipse.jetty.websocket:websocket-common:jar:9.2.23.v20171218:compile
[INFO] |     \- org.eclipse.jetty.websocket:websocket-api:jar:9.2.23.v20171218:compile
[INFO] +- org.eclipse.jetty:jetty-server:jar:9.2.23.v20171218:compile
[INFO] |  +- javax.servlet:javax.servlet-api:jar:3.1.0:compile
[INFO] |  \- org.eclipse.jetty:jetty-http:jar:9.2.23.v20171218:compile
[INFO] +- org.eclipse.jetty:jetty-servlet:jar:9.2.23.v20171218:compile
[INFO] |  \- org.eclipse.jetty:jetty-security:jar:9.2.23.v20171218:compile
[INFO] +- com.google.code.gson:gson:jar:2.2.4:compile
[INFO] +- org.glassfish:javax.json:jar:1.0.4:compile
[INFO] +- org.apache.commons:commons-dbcp2:jar:2.5.0:compile
[INFO] |  +- org.apache.commons:commons-pool2:jar:2.6.0:compile
[INFO] |  \- commons-logging:commons-logging:jar:1.2:compile
[INFO] +- postgresql:postgresql:jar:9.1-901-1.jdbc4:compile
[INFO] +- org.xerial:sqlite-jdbc:jar:3.8.6:compile
[INFO] +- org.eclipse.jetty:jetty-webapp:jar:9.2.23.v20171218:compile
[INFO] |  \- org.eclipse.jetty:jetty-xml:jar:9.2.23.v20171218:compile
[INFO] +- org.eclipse.jetty:jetty-jsp:jar:9.2.23.v20171218:compile
[INFO] |  +- org.eclipse.jetty.toolchain:jetty-schemas:jar:3.1.M0:compile
[INFO] |  +- javax.servlet.jsp:javax.servlet.jsp-api:jar:2.3.1:compile
[INFO] |  +- org.glassfish.web:javax.servlet.jsp:jar:2.3.2:compile
[INFO] |  +- org.eclipse.jetty.orbit:javax.servlet.jsp.jstl:jar:1.2.0.v201105211821:compile
[INFO] |  +- org.glassfish.web:javax.servlet.jsp.jstl:jar:1.2.2:compile
[INFO] |  +- org.glassfish:javax.el:jar:3.0.0:compile
[INFO] |  \- org.eclipse.jetty.orbit:org.eclipse.jdt.core:jar:3.8.2.v20130121:compile
[INFO] +- Microsoft:MSsql:jar:4.0:compile
[INFO] +- org.mariadb.jdbc:mariadb-java-client:jar:1.1.8:compile
[INFO] |  +- net.java.dev.jna:jna:jar:3.3.0:compile
[INFO] |  +- net.java.dev.jna:jna:jar:platform:3.3.0:compile
[INFO] |  \- commons-dbcp:commons-dbcp:jar:1.4:compile
[INFO] |     \- commons-pool:commons-pool:jar:1.5.4:compile
[INFO] +- org.apache.httpcomponents:httpclient:jar:4.5.1:compile
[INFO] |  +- org.apache.httpcomponents:httpcore:jar:4.4.3:compile
[INFO] |  \- commons-codec:commons-codec:jar:1.9:compile
[INFO] +- org.glassfish.jersey.core:jersey-server:jar:2.22.1:compile
[INFO] |  +- org.glassfish.jersey.core:jersey-common:jar:2.22.1:compile
[INFO] |  |  +- org.glassfish.jersey.bundles.repackaged:jersey-guava:jar:2.22.1:compile
[INFO] |  |  \- org.glassfish.hk2:osgi-resource-locator:jar:1.0.1:compile
[INFO] |  +- org.glassfish.jersey.core:jersey-client:jar:2.22.1:compile
[INFO] |  +- javax.ws.rs:javax.ws.rs-api:jar:2.0.1:compile
[INFO] |  +- org.glassfish.jersey.media:jersey-media-jaxb:jar:2.22.1:compile
[INFO] |  +- javax.annotation:javax.annotation-api:jar:1.2:compile
[INFO] |  +- org.glassfish.hk2:hk2-api:jar:2.4.0-b31:compile
[INFO] |  |  +- org.glassfish.hk2:hk2-utils:jar:2.4.0-b31:compile
[INFO] |  |  \- org.glassfish.hk2.external:aopalliance-repackaged:jar:2.4.0-b31:compile
[INFO] |  +- org.glassfish.hk2.external:javax.inject:jar:2.4.0-b31:compile
[INFO] |  +- org.glassfish.hk2:hk2-locator:jar:2.4.0-b31:compile
[INFO] |  \- javax.validation:validation-api:jar:1.1.0.Final:compile
[INFO] +- org.glassfish.jersey.containers:jersey-container-servlet-core:jar:2.22.1:compile
[INFO] +- org.glassfish.jersey.media:jersey-media-multipart:jar:2.22.1:compile
[INFO] |  \- org.jvnet.mimepull:mimepull:jar:1.9.6:compile
[INFO] +- org.glassfish.jersey.media:jersey-media-json-jackson:jar:2.22.1:compile
[INFO] |  +- org.glassfish.jersey.ext:jersey-entity-filtering:jar:2.22.1:compile
[INFO] |  +- com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:jar:2.5.4:compile
[INFO] |  \- com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:jar:2.5.4:compile
[INFO] |     \- com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.5.4:compile
[INFO] +- org.glassfish.jersey.containers:jersey-container-jetty-http:jar:2.22.1:compile
[INFO] |  \- org.eclipse.jetty:jetty-continuation:jar:9.1.1.v20140108:compile
[INFO] +- org.reflections:reflections:jar:0.9.10:compile
[INFO] |  +- com.google.guava:guava:jar:15.0:compile
[INFO] |  +- org.javassist:javassist:jar:3.19.0-GA:compile
[INFO] |  \- com.google.code.findbugs:annotations:jar:2.0.1:compile
[INFO] +- com.jcraft:jsch:jar:0.1.53:compile
[INFO] +- ie.corballis:sox-java:jar:1.0.1:compile
[INFO] +- com.sun.mail:javax.mail:jar:1.5.0:compile
[INFO] |  \- javax.activation:activation:jar:1.1:compile
[INFO] +- org.springframework:spring-web:jar:5.3.0:compile
[INFO] |  +- org.springframework:spring-beans:jar:5.3.0:compile
[INFO] |  \- org.springframework:spring-core:jar:5.3.0:compile
[INFO] |     \- org.springframework:spring-jcl:jar:5.3.0:compile
[INFO] +- com.fasterxml.jackson.core:jackson-databind:jar:2.11.3:compile
[INFO] |  \- com.fasterxml.jackson.core:jackson-core:jar:2.11.3:compile
[INFO] \- com.fasterxml.jackson.core:jackson-annotations:jar:2.11.3:compile

编辑:我花了一些时间研究了我能找到的提到“JSTL”的每个 Maven 工件,并修改了我的 pom.xml 以包含我能找到的每个 Jetty 9.2.23.v20171218 工件,这似乎甚至是远程引用任何 web 或 JSP 功能,但在 JDK11 下运行上述 .jar 仍然会导致原始错误。现在处理 Jakarta 和 Apache 工件(在 Maven 页面搜索字符串“FMT”、“JSTL”、“web”、“jetty”等)并添加我可以找到的所有工件,然后进行迭代。 - 添加、编译、测试、删除添加、编译、测试、删除。到目前为止,似乎没有任何添加内容提供

The absolute uri: http://java.sun.com/jsp/jstl/fmt

编辑:我对此的完全例外是

[qtp1591916281-28] WARN org.eclipse.jetty.servlet.ServletHandler -
org.apache.jasper.JasperException: /index.jsp(1,64) PWC6188: The absolute uri: http://java.sun.com/jsp/jstl/fmt cannot be resolved in either web.xml or the jar files deployed with this application
        at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:92)
        at org.apache.jasper.compiler.Errordispatcher.dispatch(Errordispatcher.java:378)
        at org.apache.jasper.compiler.Errordispatcher.jspError(Errordispatcher.java:172)
        at org.apache.jasper.compiler.TagLibraryInfoImpl.generateTLDLocation(TagLibraryInfoImpl.java:431)
        at org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:240)
        at org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:502)
        at org.apache.jasper.compiler.Parser.parseDirective(Parser.java:582)
        at org.apache.jasper.compiler.Parser.parseElements(Parser.java:1657)
        at org.apache.jasper.compiler.Parser.parse(Parser.java:185)
        at org.apache.jasper.compiler.ParserController.doParse(ParserController.java:244)
        at org.apache.jasper.compiler.ParserController.parse(ParserController.java:145)
        at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:212)
        at org.apache.jasper.compiler.Compiler.compile(Compiler.java:451)
        at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:625)
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:473)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:377)
        at org.eclipse.jetty.jsp.JettyJspServlet.service(JettyJspServlet.java:103)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
        at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)
        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:587)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
        at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:553)
        at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
        at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
        at org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:52)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
        at org.eclipse.jetty.server.Server.handle(Server.java:499)
        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)
        at org.eclipse.jetty.server.httpconnection.onFillable(httpconnection.java:258)
        at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
        at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
        at java.base/java.lang.Thread.run(Thread.java:829)

那么……我的问题是 Eclipse、Jetty、Jasper 还是 Apache?一头雾水。

编辑:我在 Netbeans 11 的项目树中的任何位置都没有“web.xml”文件。我需要一个吗?是否只有 JDK11 for Jetty / Eclipse / Jasper 才需要?

编辑:我一直在广泛地阅读我能找到的每一篇关于此的 SO 帖子,我发现我的项目源代码树中的任何地方也没有 WEB-INF 文件夹。问题/不是问题?我没有写的遗留应用程序已经有好几年了,由于上述 PWC6188,它在 JDK11 中完全无法使用。

编辑:仍然无处可去,也尝试稍微升级 Jetty 版本,问题与上述相同。似乎不可能在 Java 11 的工作状态下使用 JSTL 运行 Jetty 9.2.23.v20171218?我这样做是在浪费时间吗?我正在考虑放弃整个项目并从头开始重写,并且必须证明这一点 - 鉴于已经在这个单一问题上花费了数周的全职开发人员 - 这是开始感受到收益递减规律。我是在浪费时间,而是应该完全放弃 Jetty 吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。