【问题标题】:project will treat maven dependency as a folder instead of a jar file and on run time gives ClassNotFoundError项目会将 maven 依赖项视为文件夹而不是 jar 文件,并且在运行时会给出 ClassNotFoundError
【发布时间】:2016-04-02 20:24:43
【问题描述】:

在我的 maven 项目中,我有这个依赖项,这是我自己的项目,安装在本地 maven 中(通过 cmd mvn install):

    <dependency>
        <groupId>com.myproject</groupId>
        <artifactId>api-core</artifactId>
        <version>1.0.0</version>
    </dependency>

但是当我启动 tomcat 服务器时,我会在这个项目中的类上得到 ClassDefNotFoundError。

我尝试通过项目的属性将jar添加到部署程序集,但是当我添加这个jar文件时,它被视为一个文件夹,并且将始终放置在“WEB-INF/lib/core”的部署路径中.api.1.0.0.jar”然后是lib中的一个文件夹,因此tomcat无法找到jar文件。我还注意到在 Web 部署程序集中,Maven 依赖项被部署到 WEB-INF/lib。显然,我自己的 jar 文件在部署时不被视为 Maven 依赖项。当我从 Eclipse 进一步查看 Maven 依赖项时,jar 文件被打包为“核心”文件夹,它不被视为 jar 文件。因此,在运行时,Web 应用程序无法找到 jar 文件并给我抱怨。

进一步调查表明,在 Eclipse 中,我导入了核心项目,Eclipse 很“聪明”地识别出该项目是生成依赖项的项目,因此会自动将 jar 转换为文件夹。如果我删除核心项目,maven依赖项将成功添加为jar文件,然后部署到tomcat问题完全没有问题!

所以,我的问题是,这是一种将依赖关系保留在文件夹结构中的方法,而我仍然必须将核心项目导入我的工作区?

【问题讨论】:

    标签: java eclipse maven tomcat


    【解决方案1】:

    是的,有一个:显示 web 项目的上下文菜单,转到Maven 选项卡并取消选中 Resolve dependencies from workspace projects 选项:这样,Eclipse 不会干预Maven的依赖解析链。

    【讨论】:

      猜你喜欢
      • 2012-01-21
      • 2012-07-07
      • 2018-09-11
      • 1970-01-01
      • 1970-01-01
      • 2023-02-09
      • 1970-01-01
      • 1970-01-01
      • 2013-03-08
      相关资源
      最近更新 更多