gpt4 book ai didi

java - struts2 spring项目运行在jetty和tomcat上

转载 作者:行者123 更新时间:2023-11-28 22:43:05 24 4
gpt4 key购买 nike

我正在开发一个可以在 Tomcat 上成功部署的 Web 项目。现在我想在 jetty 运行这个项目。我创建了一个启动 jetty 的主要方法。 jetty 从 8080 端口开始,但显示 error 500 JSP support not configured所以我添加了 jetty jsp 依赖项。然后它抛出异常 org.apache.jasper.JasperException: /common/taglibs.jsp(2,80) PWC6188: The absolute uri: http://www.springframework.org/security/tags cannot be resolved in either web.xml or the jar files deployed with this application (其中 taglib.jsp 包含不同的标签库)

然后,当我在 tomcat 上运行它时,它会启动一些信息 INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/sql is already defined

当我开始时它给出了 java.lang.NoSuchMethodError: org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(Ljava/lang/String;Ljava/lang/Class;Ljavax/servlet/jsp/PageContext;Lorg/apache/jasper/runtime/ProtectedFunctionMapper;Z)Ljava/lang/Object;

ma​​ven 依赖

<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<version>${jetty.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-webapp</artifactId>
<version>${jetty.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-jsp</artifactId>
<version>${jettyjsp.version}</version>
</dependency>

编辑 1: 当我添加 <scope>provided</scope>依赖 tomcat 成功启动但是当启动 jetty 时它仍然提供以下堆栈跟踪

org.apache.jasper.JasperException: /common/taglibs.jsp(2,80) PWC6188: The absolute uri: http://www.springframework.org/security/tags cannot be resolved in either web.xml or the jar files deployed with this application
at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:89)
at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:375)
at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:169)
at org.apache.jasper.compiler.TagLibraryInfoImpl.generateTLDLocation(TagLibraryInfoImpl.java:429)
at org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:234)
at org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:499)
at org.apache.jasper.compiler.Parser.parseDirective(Parser.java:579)
at org.apache.jasper.compiler.Parser.parseElements(Parser.java:1649)
at org.apache.jasper.compiler.Parser.parse(Parser.java:182)
at org.apache.jasper.compiler.ParserController.doParse(ParserController.java:239)
at org.apache.jasper.compiler.ParserController.parse(ParserController.java:156)
at org.apache.jasper.compiler.Parser.processIncludeDirective(Parser.java:391)
at org.apache.jasper.compiler.Parser.parseIncludeDirective(Parser.java:428)
at org.apache.jasper.compiler.Parser.parseDirective(Parser.java:571)
at org.apache.jasper.compiler.Parser.parseElements(Parser.java:1649)
at org.apache.jasper.compiler.Parser.parse(Parser.java:182)
at org.apache.jasper.compiler.ParserController.doParse(ParserController.java:239)
at org.apache.jasper.compiler.ParserController.parse(ParserController.java:140)
at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:204)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:431)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:608)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:476)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:366)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:770)
at org.eclipse.jetty.servlet.JspPropertyGroupServlet.service(JspPropertyGroupServlet.java:127)

最佳答案

您面临着不同的问题。

jetty 问题

如果您确实想将 jetty 作为服务器运行,则不得将 jetty 声明为依赖项,而应将其声明为插件。

Jetty 只需将这些行添加到您的 pom.xml 中即可工作:

最新版本的插件

<build>
<!-- MORE CONF HERE -->
<plugins>
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.0.0.v20130308</version>
</plugin>

<!-- Maybe more plugins here -->
</plugins>
<!-- EVEN MORE Build CONF HERE -->
</build>

或者旧版本(比如在我的项目中)

<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>8.1.3.v20120416</version>
</plugin>

有很多可用的插件配置,但基本的就足够了。

更多信息:

Servlet API 问题

你的 java.lang.NoSuchMethodError 意味着你正在尝试运行你的应用程序,在一个版本中使用嵌入式 Servlet API,比如版本 A,针对在另一个版本中运行它的服务器,比如版本 B。这些版本不兼容。

您应该只声​​明提供的 Servlet API,而不是默认范围(编译),并确保您的服务器支持它。

关于java - struts2 spring项目运行在jetty和tomcat上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20325328/

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