gpt4 book ai didi

java - 当应用程序部署在 Eclipse 外部时,调用 JSP 文件会出现 NoSuchMethodError

转载 作者:行者123 更新时间:2023-11-29 09:03:24 25 4
gpt4 key购买 nike

我有一个在 Eclipse 中完全按预期工作的 Maven 项目。它还在 eclipse 之外构建和运行,但是当我尝试调用前端(JSP 网页)时,我得到以下信息:

Problem accessing /. Reason:

javax.servlet.ServletContext.getJspConfigDescriptor()Ljavax/servlet/descriptor/JspConfigDescriptor;

Caused by:

java.lang.NoSuchMethodError: javax.servlet.ServletContext.getJspConfigDescriptor()Ljavax/servlet/descriptor/JspConfigDescriptor; ...

我环顾四周,似乎这条消息与 Servlet 2.5 和 Servlet 3.0 之间的不兼容有关。但是我的 pom 中已经有 Servlet 3.0 作为依赖:

<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
</dependency>

所以我不明白为什么在 eclipse 之外构建和部署时我需要的这种依赖性没有被包括在内,即使构建本身是成功的。

知道是什么原因造成的以及如何解决吗?

编辑:JSP 访问未在 web.xml 中配置。 index.jsp 文件是使用此代码段为 jetty 服务器设置的欢迎文件:

// configure webapp
WebAppContext webroot = new WebAppContext();
webroot.setResourceBase("src/main/webapp");
webroot.setContextPath("/");
webroot.setWelcomeFiles(new String[] {"index.jsp"});
webroot.setParentLoaderPriority(true);
server.setHandler(webroot);

剩下的几个jsp文件在webapp文件夹下。

编辑 2:我检查了打包我的项目时创建的 jar 的内容,看起来 jar 中有 javax/servlet/Servlet.class 的多个副本。这有点令人费解。我假设我的 pom 中的这些其他依赖项(下面列出)必须添加额外的 Servlet.class 文件。

<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<version>8.1.8.v20121106</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-webapp</artifactId>
<version>8.1.8.v20121106</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-jsp</artifactId>
<version>8.1.8.v20121106</version>
</dependency>

但我不确定如何解决这些问题...

如果有人有任何想法,我很乐意听取他们的意见。我唯一真正的限制是我必须使用 jetty 8.1.8.v20121106。

最佳答案

在我看来,您可能在不受支持的 tomcat 6 上部署了 servlet 3.0,这会导致此异常。

另一种可能性是您在 war 中导出额外的 .classes 会干扰 tomcat 的默认库。

关于java - 当应用程序部署在 Eclipse 外部时,调用 JSP 文件会出现 NoSuchMethodError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16180663/

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