我在ec2实例中使用了openjdk11+tomcat(8和9都尝试了)将本地的javaweb项目用maven打包(war)传到tomcat/webapps 目录下。
但是在部署执行的时候会出现java.lang.NoClassDefFoundError: jakarta/ws/rs/core/Configurable的报错。
查找后发现是找不到javax.ws.rs-api-2.1.1.jar,但是我在多次手动把各个版本的这个jar包导入后仍然显示找不到这个类;
也尝试了导入jakarta.ws.rs-api-2.1.6.jar(我尝试了2.1.4,2.1.6以及3.0.0)。
但是我在本地的idea里直接用tomcat或者单独打包到tomcat部署都没有过这个报错,我直接把本地jar包都放到ec2的lib目录下也都没有奏效(尝试了tomcat/lib目录和WEB-INF/lib)
这个问题可能是由于在EC2实例中的Tomcat版本与本地的Tomcat版本不一致导致的。你可以尝试以下方法解决这个问题:
cat /path/to/your/tomcat/bin/version.sh | grep "Tomcat"
如果你发现EC2实例中的Tomcat版本与本地的Tomcat版本不一致,你需要更新EC2实例中的Tomcat版本。你可以从Tomcat官网下载相应版本的Tomcat,然后替换EC2实例中的Tomcat。
在部署项目之前,确保你的项目中包含了所有需要的依赖库。你可以使用Maven的dependency:copy-dependencies
插件来将本地项目的依赖库复制到EC2实例中的项目目录。例如:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.2.0</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>validate</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>true</overWriteSnapshots>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
cd /path/to/your/tomcat/bin
./startup.sh
WEB-INF/lib
目录下。最后,重新启动Tomcat。版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。