首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >.m2 : jars,但是jars是在Maven中下载的

.m2 : jars,但是jars是在Maven中下载的
EN

Stack Overflow用户
提问于 2018-10-30 03:23:42
回答 2查看 70关注 0票数 0

我有一个tomcat项目:tomcat/webapps/Project。该项目使用org.json库,依赖写在pom.xml文件中:

代码语言:javascript
复制
<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再次这样做。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-30 07:42:37

Command mvn install将编译您的项目库并将其安装到本地存储库。此外,它还将下载并复制.m2/repository目录下所有依赖项。有关mvn install的更多详细说明,请参阅this question

但是,它与Tomcat或将应用程序部署到Tomcat实例没有任何关系。它不会直接为Tomcat提供任何库。

要让Tomcat使用任何库,至少有以下两个选项:

  1. 您可以将它们作为依赖项添加到war打包项目中。因此,如果您已经部署了WAR,但Tomcat似乎仍然找不到该库,那么您的pom.xml中可能有问题。
  2. 正如在其他回答中所建议的,您可以手动将依赖项复制到tomcat/lib目录,并在POM <scope>provided</scope>中创建依赖项,以防止这些依赖项打包到WAR中。

如果您不想在开发时每5分钟部署一次整体-比如说100MB - war,那么后一种选择可能是明智的,特别是如果通过网络进行部署的话。

票数 1
EN

Stack Overflow用户

发布于 2018-10-30 03:29:27

如果你把你的.jar文件放到你的tomcat文件夹lib中,它将会工作的很棒!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53052428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档