相關:Jetty - 將 9.3.0.M1 升級到 9.3.0.M2 使用 Maven 破壞 JSP 功能
相關:Jetty 9 從 JDK1.8 遷移到 JDK11 - http://java.sun.com/jsp/jstl/fmt 無法在 JDK11 中決議 - fat exec jar
我有一個在 JDK 1.8(是的,舊的)上運行的遺留 maven 專案,我需要升級到 JDK 17。
它在嵌入式 Jetty 實體版本 9.2.23.v20171218 上運行。
我整天都在通過 SO 嘗試其他人建議的至少 9 種不同的修復方法,但都沒有奏效。我沒有 web.xml 檔案或 web-INF 檔案夾,幾乎所有帖子都參考了專案中的這些檔案夾?
它也是一個 Jetty 的嵌入式實體(這看起來很獨特,而且是一個奇怪的用例?)
嘗試在瀏覽器中訪問專案的 index.jsp 的例外情況是
org.apache.jasper.JasperException: /index.jsp(1,64) 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
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:833)
------------------------------------------------------------
我知道至少有 30 篇關于同一個問題的帖子——我今天已經一個一個地解決了它們,沒有快樂......
該錯誤似乎與以下事實有關嘗試了JDK11,它也不起作用)。任何高于 1.8 的 JDK 似乎都會出現上述例外,并且 Jetty 無法決議任何 .JSP 檔案了。
根據各種 SO 帖子的建議,我有以下 Maven 工件:
.
.
.
<dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>jstl-api</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
.
.
.
并且可以在 NetBeans 14 中確認在“依賴項”中我有
jstl-1.2.jar
jstl-api-1.2.jar
如果我在 Netbeans 14 專案視圖中打開 jstl-1.2.jar,我可以看到抱怨的確切類,例如
jstl-1.2.jar
>.
.
.
javax.servlet.jsp.jstl.core
javax.servlet.jsp.jstl.fmt
.
.
.
存在于專案 JAR 中。
我的 .jsp 頁面的第一行是
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
.
.
.
如何讓 Jetty / Jasper 在我的專案的上述 JAR 中找到 jstl-1.2.jar 的“fmt”和“核心”類,并將上面的 TLD 映射到這些類,以便我可以在任何高于 JDK 的 JDK 中恢復 JSP 功能1.8?
(如前所述,JDK 1.8 可以按原樣使用上述代碼庫,任何更高版本的 JDK 都會失敗,但出現上述例外。)
任何幫助或建議表示贊賞!
謝謝
我的 mvn 依賴:樹:
--- maven-dependency-plugin:2.8:tree (default-cli) @ verdi ---
[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.17.1:compile
[INFO] - org.apache.logging.log4j:log4j-core:jar:2.17.1: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.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] - com.microsoft.sqlserver:mssql-jdbc:jar:6.4.0.jre8:compile
[INFO] - org.mariadb.jdbc:mariadb-java-client:jar:2.7.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
[INFO] - javax.servlet.jsp.jstl:jstl-api:jar:1.2:compile
[INFO] | - javax.servlet:servlet-api:jar:2.5:compile
[INFO] | \- javax.servlet.jsp:jsp-api:jar:2.1:compile
[INFO] - javax.servlet:jstl:jar:1.2:compile
[INFO] \- javax.xml.bind:jaxb-api:jar:2.3.1:compile
[INFO] \- javax.activation:javax.activation-api:jar:1.2.0:compile
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.017 s
[INFO] Finished at: 2022-08-24T16:49:34 02:00
[INFO] ------------------------------------------------------------------------
編輯:在閱讀了很多關于這個例外的 SO 帖子后,我更改為 Apache 工件,但這沒有任何改變,除了字串“PWC6188”之外完全相同的例外,如果我使用 Apache 工件就會消失
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>apache-jsp</artifactId>
<version>9.2.23.v20171218</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>apache-jstl</artifactId>
<version>9.2.23.v20171218</version>
</dependency>
異
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-jsp</artifactId>
<version>9.2.23.v20171218</version>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
對于 Apache-JSP 工件,其余的例外文本保持不變,只是堆疊跟蹤中的行號發生了變化。
uj5u.com熱心網友回復:
這已解決 - 參見
Jetty - 將 9.3.0.M1 升級到 9.3.0.M2 會破壞使用 Maven 的 JSP 功能
總之(見上面的鏈接)突破是在 pom.xml 中添加了 Apache-JSP 和 Apache-JSTL 工件(詳細資訊在上面的鏈接中),并且還添加了 jetty-webapp、jaxb-api 和 jetty-annotations 工件,以及然后洗掉 Jetty-JSP 工件。
然后還升級到 JDK 17(從 JDK 1.8)并將 pom.xml 中的 Jetty 版本升級到至少版本 9.4.48.v20220622
一旦完成 PWC6188 與
org.apache.jasper.JasperException: /index.jsp(1,64) 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
at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:92)
訪問 Jetty 服務器時從瀏覽器中消失,并且 JSP 渲染再次正常作業,就像我之前使用的舊版 Jetty (9.2.2.v20140723) 和舊的 JDK 1.8 一樣。
我還將我的 Netbeans 從 NetBeans 11 升級到了 NetBeans 14,不確定這是否也對使其正常作業產生了積極影響。到目前為止,僅在 NetBeans 內部進行了測驗,尚未嘗試將 .jar 部署到所涉及的操作服務器。
它現在可以在 JDK 17 中運行,這一直是我的目標,具有稍微更新的 Jetty 版本(至少 - 仍在努力獲取當前的 Jetty 版本),并且 JSP 支持正常作業。
希望這可以幫助某人。
編輯:我忘記了在啟動碼頭時我還必須對我的 WebappContext 執行此操作,以在啟動碼頭時使上述 PWC6188 例外消失:
.
.
.
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);
.
.
.
例如我必須添加
waContext.setAttribute("org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern", ".*/[^/]*servlet-api-[^/]*\\.jar$|.*/javax.servlet.jsp.jstl-.*\\.jar$|.*/[^/]*taglibs.*\\.jar$");
否則在 Jetty 9.3.0.M2 我又遇到了同樣的例外。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/504188.html
上一篇:com.mysql.cj.jdbc.exceptions.CommunicationsException:通信鏈路故障。驅動程式沒有收到來自服務器的任何資料包
