首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jetty 9从jar 1.8迁移到JDK11 - JDK11无法在JDK11- fat exec中解决。

Jetty 9从jar 1.8迁移到JDK11 - JDK11无法在JDK11- fat exec中解决。
EN

Stack Overflow用户
提问于 2021-06-26 08:55:36
回答 1查看 170关注 0票数 0

相关:Jasper exception PWC6188 - Jetty cannot resolve javax.servlet.jstl.fmt TLD to JSTL classes inside project

相关:Jetty - upgrading 9.3.0.M1 to 9.3.0.M2 breaks JSP functionality using Maven

我正试着像上面那样迁移。Maven项目。

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

我从Ubuntu在Ubuntu20.04.2LTS上的官方回复中运行JDK11。

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

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

除了Jetty之外,一切都在JDK11上工作--如果我在Windows10机器上运行JDK1.8中的.jar,它可以从Jetty提供.JSP页面。

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

如果我在Linux机器上运行.jar in JDK11,当我试图在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

显然,Jetty的JSTL机制在JDK1.8和JDK11之间有一个关键的区别。

那能是什么?

我已经广泛地研究了我的问题是其他人谁得到了这个

代码语言:javascript
复制
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

当我得到

代码语言:javascript
复制
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

“核心”与"fmt" --没有其他人能找到"fmt“--每个人都在相同的错误信息中得到”核心“。

我从哪里开始看?

突出的问题是,这只适用于JDK11 1.8--如果我用JDK11在中试用,我会得到与JDK11在Linux上相同的错误。

因此,我的问题是JDK1.8Jetty代码在我实现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

代码语言:javascript
复制
/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所建议的:

代码语言:javascript
复制
[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,使其包含了我可以找到的每一个Jetty9.2.23.v20171218工件,我甚至可以找到这些工件,甚至可以远程引用任何web或JSP功能,但是在JDK11下运行上面提到的.jar仍然会导致原始错误。现在遍历雅加达和Apache工件(搜索Maven页面上的字符串"FMT“、"JSTL”、"web“、"jetty”等),并添加所有的工件,我可以找到,然后迭代。-添加、编译、测试、删除、添加、编译、测试、删除。到目前为止,似乎没有添加任何内容来提供预期的

代码语言:javascript
复制
The absolute uri: http://java.sun.com/jsp/jstl/fmt

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

代码语言:javascript
复制
[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“文件。我需要一个吗?Jetty / Eclipse / Jasper只需要JDK11吗?

编辑:我一直在广泛的工作,我可以找到每一个这样的帖子,我发现我也没有working文件夹,在我的项目源代码树的任何地方。问题/不成问题?遗留应用程序我没有写,这是几年前,它是完全无法在JDK11上使用,因为上面的PWC6188。

编辑:在这方面还没有任何地方,也尝试过稍微升级Jetty版本,问题仍然与上面一样。在Java 11中,使用JSTL运行Jetty 9.2.23.v20171218似乎是不可能的?我这么做是在浪费时间吗?我正在考虑放弃整个项目,从头开始重写,并且必须证明这一点--考虑到已经在这个单一问题上花费了数周的全职时间--这是收益递减的规律。我是在浪费时间,应该完全抛弃码头吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-26 07:36:15

我今天终于解决了这一问题,请参阅这些链接,了解更多细节,以及我在Maven项目pom.xml中发现的确切工件:

Jetty - upgrading 9.3.0.M1 to 9.3.0.M2 breaks JSP functionality using Maven

Jasper exception PWC6188 - Jetty cannot resolve javax.servlet.jstl.fmt TLD to JSTL classes inside project

有效地解决这些问题的步骤是

  1. 升级到JDK 17.
  2. 将jetty-jsp工件从pom.xml
  3. 添加到pom.xml
  4. ,将jaxb-api工件添加到pom.xml

H 111将jetty-webapp工件添加到spum.xmlH 212h 113添加Apache-JSTL工件到po.xmlH 214H 115将Jetty版本的pom.xml至少提高到9.4.48.v20220622 (不知道更高的版本是否仍然适用于我的设置,))

我还将我的Netbeans从NetBeans 11升级到了NetBeans 14,不确定这是否也对此起了积极作用。到目前为止,仅在NetBeans内部进行了测试,还没有尝试将.jar部署到所涉及的操作服务器。

无论如何,有关详细信息,请参阅上述两个链接。

现在这个问题已经解决了,我已经成功地将Jetty 9升级到了更新版本的Jetty 9,同时使用了JDK --它运行的时间从1.8上升到17 --同时保持了JSP功能--这就是我想要做的,也是我去年发布这个问题的原因。

希望这能帮上忙。

编辑:我忘了在启动jetty时,我还必须对我的WebappContext做此操作,以便在启动Jetty时使上面的PWC6188异常消失:

代码语言:javascript
复制
.
.
.
            WebAppContext waContext = new WebAppContext(webDir, "/");            
              waContext.setInitParameter("org.eclipse.jetty.servlet.Default.dirAllowed", "false");
            waContext.setSecurityHandler(basicSecurity);  
            
            waContext.setAttribute("org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern", ".*/[^/]*servlet-api-[^/]*\\.jar$|.*/javax.servlet.jsp.jstl-.*\\.jar$|.*/[^/]*taglibs.*\\.jar$");

            server.setHandler(waContext);
.
.
.

我不得不加上

代码语言:javascript
复制
waContext.setAttribute("org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern", ".*/[^/]*servlet-api-[^/]*\\.jar$|.*/javax.servlet.jsp.jstl-.*\\.jar$|.*/[^/]*taglibs.*\\.jar$");

否则,在Jetty9.3.0.M2中,我又出现了同样的异常。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68140774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档