开发者社区 > 弹性计算 > 云服务器ECS > 正文

tomcat找不到jakarta/ws/rs/core/Configurable

已解决

我在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)

展开
收起
低手_ 2024-01-15 14:50:16 156 0
1 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。
    推荐回答

    这个问题可能是由于在EC2实例中的Tomcat版本与本地的Tomcat版本不一致导致的。你可以尝试以下方法解决这个问题:

    1. 确保你的EC2实例中的Tomcat版本与本地的Tomcat版本一致。你可以在EC2实例中运行以下命令来查看Tomcat的版本:
    cat /path/to/your/tomcat/bin/version.sh | grep "Tomcat"
    
    1. 如果你发现EC2实例中的Tomcat版本与本地的Tomcat版本不一致,你需要更新EC2实例中的Tomcat版本。你可以从Tomcat官网下载相应版本的Tomcat,然后替换EC2实例中的Tomcat。

    2. 在部署项目之前,确保你的项目中包含了所有需要的依赖库。你可以使用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>
    
    1. 在部署项目之后,确保你的EC2实例中的Tomcat已经启动并运行。你可以使用以下命令来启动Tomcat:
    cd /path/to/your/tomcat/bin
    ./startup.sh
    
    1. 如果问题仍然存在,你可以尝试在EC2实例中手动添加缺失的依赖库。首先,找到缺失的依赖库文件(如jakarta.ws.rs-api-2.1.1.jar),然后将其复制到EC2实例中的Tomcat的WEB-INF/lib目录下。最后,重新启动Tomcat。
    2024-01-15 14:59:02
    赞同 展开评论 打赏
问答分类:
问答标签:

云服务器ECS是一种安全可靠、弹性可伸缩的IaaS级云计算服务。在这里你可以获取最新的ECS产品资讯、最前沿的技术交流以及优惠活动等信息,加速自己的技术成长。

相关电子书

更多
Apache Tomcat 的云原生演进 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载