首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Eclipse不可逆转的动态Web模块4.0选择;Tomcat 9不支持它

Eclipse不可逆转的动态Web模块4.0选择;Tomcat 9不支持它
EN

Stack Overflow用户
提问于 2018-02-06 17:49:59
回答 4查看 20.3K关注 0票数 14

我用Java 8在Windows 10上使用EclipseOxygen.2 (4.7.2),我在Eclipse中使用Tomcat运行了一个分面的项目。我一直在使用Tomcat 8.5,但在一个新系统上,我升级到Tomcat 9,当然,我在Eclipse中删除了Tomcat 8.5服务器和服务器运行时,并添加了Tomcat 9服务器运行时。

在Eclipse中添加Tomcat 9服务器之前,我验证了项目的项目方面。我看到动态Web模块被设置为"3.1",但现在"4.0“已经可用。我更改为"4.0",认为这将使我可以访问较新的API。

然后我尝试添加Tomcat 9服务器。在此过程中,在“添加和删除”时,它会询问我要为服务器配置哪些项目。我选择了我的web项目,但是Eclipse9.0说:“TomcatVersion9.0只支持J2EE 1.2、1.3、1.4和Java 5、6、7和8个Web模块”。

据我所知,这正是我所用的。但我唯一改变的是动态Web模块。因此,我回到了我的项目配置,并试图将“动态Web模块”更改为"3.1“。Eclipse告诉我:

无法将项目方面动态Web模块的版本更改为3.1。

Um…所以我就把它拿掉。我取消选中“动态Web模块”旁边的框,Eclipse告诉我:

无法卸载动态Web模块4.0。

那是一壶很好的鱼。我无法将我的项目部署到Tomcat,显然是因为动态Web模块。我无法将动态Web模块更改回原来的状态。我做什么好?问题出在哪里?

我打开了日食虫530844,看看我是否能找到这种行为的一些原因。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-02-07 06:49:00

我在和你一样的环境中重现了这个问题。当我试图从4.0倒退到3.1时,我得到了以下错误:

这个博客提供了解决方案 (这是一种黑客攻击,但它有效):

  • 编辑项目的.settings目录中的文件。
  • 对于包含facet="jst.web“version="4.0"的行,将版本更改为3.1

请参见以下问题:动态Web模块3.0 -- 3.1

几个相关问题:

  • 您的设置可能不太正确--“TomcatVersion9.0只支持J2EE 1.2、1.3、1.4和Java 5、6、7和8个Web模块”。您的项目是否配置为使用Servlet4.0?对于我的Maven项目,我必须对Servlet 4进行将此依赖项添加到POM中
  • 即使在将动态Web模块版本更改为3.1之后,我的web应用程序仍然继续使用4.0版本,所以我不知道这个方面实现了什么。
票数 12
EN

Stack Overflow用户

发布于 2019-04-12 10:58:07

对我来说,在从pom文件中删除下面的依赖项之后,这个问题就消失了。

代码语言:javascript
复制
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>4.0.0</version>
    <scope>provided</scope>
</dependency>

希望这有帮助

票数 3
EN

Stack Overflow用户

发布于 2019-04-08 00:25:08

我的解决方案是对以下信息的回应:

代码语言:javascript
复制
Dynamic Web Module 4.0 cannot be uninstalled.

如果您无法卸载动态网络模块(我重复一遍:“卸载”而不是“更改其版本”),您可以首先在项目目录中编辑文件:.settings/org.eclipse.wst.common.project.facet.core.xml,然后通过删除以下一行手动卸载它:

代码语言:javascript
复制
<installed facet="jst.web" version="4.0"/>

2-在此之后,如果您想使用动态web模块4.0,请确保至少在同一个文件.settings/org.eclipse.wst.common.project.facet.core.xml中的方面使用java1.8

代码语言:javascript
复制
<installed facet="java" version="1.8"/>

或者您也可以在“项目面配置”面板中更改它。

3-如果问题仍然存在,请查看pom文件并验证没有强制java版本为1.7,您应该拥有以下属性

代码语言:javascript
复制
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>

如果您更改pom文件: Maven >,请记住更新您的项目

4.最后,如果您仍然不能使用DynamicWebModule4.0,只需在删除您的WEB-INF\web.xml文件之间进行选择,该文件可以为另一个动态Web版本配置如下:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
...

否则,可以手动更改受支持的版本:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0">
...

返回到Project配置面板,再次尝试选择DynamicWebModule4.0,它应该可以工作

希望能帮上忙。

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

https://stackoverflow.com/questions/48649041

复制
相关文章

相似问题

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