我正在挑选一个有很多旧依赖项的旧项目。我正在使用“面向企业Java和Web开发人员的Eclipse IDE”。在将源代码导入Eclipse后,Eclipse抱怨我所有的jsp文件
The superclass "jakarta.servlet.http.HttpServlet" was not found on the Java Build Path
在pom.xml中,我看到有这样的依赖关系:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
我去google了解了这个错误,读了一些javax vs jakarta的历史。问题是,因为这是一个老项目,仍然在服务器上运行...我能坚持使用javax而不是jakarta吗?
在Eclipse中,在Project Facets下,我选中了“Dynamic Web Module”,它在本地使用Apache Tomcat v9.0。在服务器设置下,我在localhost上设置了“Tomcat v9.0 Server”以运行此项目。
另一件事我不知道它是否与我的Tomcat设置或项目设置有关,那就是在pom.xml上,我得到了一个关于丢失许多工件的错误,比如“jini:jsk-lib:jar”、“jini:reggie:jar”、“jini:start:jar”等等...
3条答案
按热度按时间qf9go6mv1#
我能坚持使用javax而不是jakarta吗?
是的,你当然可以坚持使用
javax.
命名空间,而不是迁移到新的jakarta.
命名空间。最终你会希望通过迁移来受益于新的和改进的技术。但今年或明年没有必要。阅读Which version?文档页面。您将看到版本9.0.x和10.0.x在功能上是等效的,是并行开发的。唯一显著的区别是上面讨论的命名空间更改。因此,如果您选择坚持使用
javax
命名,请使用Tomcat 9。您需要整理代码库,以便只使用
javax.
命名。显然,您有一些代码引用了新的jakarta.
命名。请修复此问题。检查import
语句。检查是否使用了完全限定的类名。使用IDE的搜索工具。顺便说一下...如果使用Tomcat 9,您可以将对Servlet API的依赖从3.0.1更改为Servlet specification的4.0.3版本。请参见上面链接的 * 哪个版本?* 页面以及https://Jakarta.EE站点,以了解JSP等规范的适当版本。
esyap4oy2#
为了使用JSP运行javax.servlet,您需要两个依赖项。
第一个是servlet API,
第二个是API,
注意:
javax.servlet.jsp-api
还包括对javax.servlet-api
的依赖项,因此您在项目中不需要显式地使用它。这意味着,
javax.servlet-api
对于JSP的工作是必需的。vmdwslir3#
只需转到mavenrepository和seach for java API然后单击版本api然后向下滚动复制依赖项,如下所示
现在past这在pom.xml在你的项目在dependency标记这已经是present. after这右键点击之上项目并且选择maven选择更新项目然后检查强制更新然后点击确定这将解决你的错误