我在Windows 10和Java 8上使用Eclipse Oxygen.2(4.7.2)。我有一个使用Tomcat在Eclipse中运行的分面项目。我一直在使用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项目,但是Eclipse说:“Tomcat版只支持J2EE 1.2、1.3、1.4和Java EE 5、6、7和8 Web模块”。
据我所知,这正是我正在使用的。但我唯一改变的是动态Web模块。因此,我返回到我的项目配置,并尝试将“动态 Web 模块”更改回“3.1”。Eclipse告诉我:
无法将项目方面动态Web模块的版本更改为3.1。
嗯…所以我就把它拿走。我取消选中了“动态Web模块”旁边的框,Eclipse告诉我:
无法卸载动态 Web 模块 4.0。
那真是一大堆鱼。我不能将我的项目部署到Tomcat,显然是因为动态Web模块。我无法将动态Web模块改回原来的样子。我该怎么办?问题出在哪里?
我打开了Eclipse Bug 530844,看看是否能得到这种行为的一些原因。
我的解决方案是对此消息的响应:
Dynamic Web Module 4.0 cannot be uninstalled.
1 - 所以;如果你不能卸载动态Web模块(我重复一遍:“卸载”而不是“更改其版本”),你可以先在你的项目目录中编辑文件:.settings/org.eclipse.wst.common.project.facet.core.xml
然后通过删除以下行手动卸载它:
<installed facet="jst.web" version="4.0"/>
2 -在这之后,如果你想使用动态web模块4.0,确保你至少在你的facets java 1.8里面使用相同的文件< code >。settings/org . eclipse . wst . common . project . facet . core . XML
<installed facet="java" version="1.8"/>
或者,您也可以在“项目分面配置”面板中更改它
3-如果问题仍然存在,请查看您的pom文件并验证没有强制java版本为1.7,您应该拥有这些属性
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
如果更改了pom文件,请记住更新项目:Maven
4-最后,如果您仍然不能使用动态Web模块4.0,只需选择删除您的WEB-INF\web.xml
文件,该文件可以配置为另一个动态Web版本,如下所示:
<?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">
...
否则,您可以手动更改支持的版本:
<?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">
...
返回到ProjectFacets配置面板,再次尝试选择DynamicWebModule 4.0,它应该可以工作
希望这有帮助。
对我来说,从pom文件中删除下面的依赖项后,这个问题就消失了。
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.0</version>
<scope>provided</scope>
</dependency>
希望有所帮助
我在与您相同的环境中重现了该问题。当我尝试从4.0退回到3.1时,我得到了以下错误:
这个博客提供了解决方案(这有点黑客,但它有效):
另请参阅此SO问题:动态Web模块3.0-3.1
几个相关问题:
>
看起来您的设置中的其他内容可能不太正确,因为收到错误“Tomcat V9.0 仅支持 J2EE 1.2、1.3、1.4 和 Java EE 5、6、7 和 8 Web 模块”。您的项目是否配置为使用 Servlet 4.0?对于我的 Maven 项目,我必须将此依赖项添加到 Servlet 4 的 POM 中。
即使在将动态web模块版本更改为3.1之后,我的Web应用程序仍在使用4.0版本,所以我不确定这个方面实现了什么。
问题内容: 我的问题是,即使将“ Deployment Assembly”设置为包括maven依赖项,这也导致找不到我的类,我也不知道该怎么办。 我只是注意到该类,因为其他类似乎已包含在我的软件包中。 我的文件pom.xml 我的文件web.xml 问题答案: 出现此问题的原因可能是: 某些库版本不匹配(例如,要编译的Java版本!= Web应用程序服务器上的Java版本)。 部署期间不包括必需的
我想把.html文件和.java文件放在同一个包中,放在/src/main/java下,但是在创建新的.html文件时,Eclipse提供/webapp作为默认文件夹。有没有办法改变这种行为?
我用的是IntelliJ IDEA Pro 13.1.2。从未使用过13以下的任何版本。 当试图从IDE运行时,我得到以下消息:
写了一个组件,h5、模拟器能正常显示,但是打包成Android包安装到手机上会导致整个页面都白屏了,没法正常显示,已经定位到就是该组件的问题,把组件改写去掉动态插槽打包后就没问题,但是代价就是组件通用性不高,可能需要根据业务定制不同的组件(绝大部分代码差不多),请问有没有啥办法处理这问题? tags 如下: 使用方式: 更新后的使用方式: 组件: 使用: 仍然不行,显示的始终是组件里面的默认插槽内
我正在使用Android studio 1.0。1.我的项目中有一个被其他模块引用的java模块。我已经从SVN那里查过了,但现在每天 检测到不支持的模块:以下模块不支持编译:。不幸的是,在一个项目中不能有非Gradle Java模块和Android Gradle模块。 在收到此错误后,请停止编译此模块,以便我无法再编译/运行我的项目。