我有一个tomcat项目:tomcat/webapps/Project
。该项目使用org.json
库,依赖写在pom.xml
文件中:
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20180813</version>
</dependency>
我已经在我的服务器上安装了maven
,并在Project
目录中运行此命令:mvn install
然后我检查了/root/.m2/repository/org/json/20180813
文件夹,文件json-20180813.jar
就在那里!
然而,当我重新启动我的服务器:shutdown.sh
并尝试使用我的应用程序时,错误仍然存在:
javax.servlet.ServletException: java.lang.NoClassDefFoundError: org/json/JSONObject
为什么会发生这种情况,以及如何修复它?
编辑:人们指出了将jar复制到tomcat/lib
目录的问题。我这么做了,它起作用了。然而,我也对一种更持久的解决方案感兴趣,这样我就不会被迫在将来使用其他jars再次这样做。
发布于 2018-10-30 07:42:37
Command mvn install
将编译您的项目库并将其安装到本地存储库。此外,它还将下载并复制.m2/repository
目录下所有依赖项。有关mvn install
的更多详细说明,请参阅this question。
但是,它与Tomcat或将应用程序部署到Tomcat实例没有任何关系。它不会直接为Tomcat提供任何库。
要让Tomcat使用任何库,至少有以下两个选项:
war
打包项目中。因此,如果您已经部署了WAR,但Tomcat似乎仍然找不到该库,那么您的pom.xml
中可能有问题。tomcat/lib
目录,并在POM <scope>provided</scope>
中创建依赖项,以防止这些依赖项打包到WAR中。如果您不想在开发时每5分钟部署一次整体-比如说100MB - war,那么后一种选择可能是明智的,特别是如果通过网络进行部署的话。
发布于 2018-10-30 03:29:27
如果你把你的.jar
文件放到你的tomcat文件夹lib
中,它将会工作的很棒!
https://stackoverflow.com/questions/53052428
复制相似问题