java – Maven编译错误:包不存在
我正在尝试为现有的企业项目添加maven支持.这是一个多模块项目,前两个模块编译和打包没有问题,但我面临编译错误我尝试在多个模块中使用相同的依赖项.
我的结构是: > + parent > - pom.xml > - module-1 > - pom.xml > - module-2 (Depends on module-1) > - pom.xml > - module-3 > - pom.xml (Depends on both modules 1 and 2) 我在Eclipse上打开了项目,它没有显示任何错误.当我从父进程运行mvn clean install时,它成功安装了模块1和模块2,但在模块3上失败,说包xxx.yyy不存在且无法找到符号XXXYYY.包xxx.yyy和符号XXXYYY位于模块2和3的依赖项中列出的jar中. 由于两个模块都依赖于同一个jar,我尝试仅在模块2上添加依赖项,并且我认为模块3应该因为传递依赖性而看到它,但它无法看到包.所以我尝试将依赖项添加到模块2和3 poms并且问题仍然存在. 我已经检查过/试过这些: >请求的jar列在我的家属中.我运行了以下命令,之后我可以在依赖项列表中看到所需的.jar文件:mvn依赖项:copy-dependencies 我的项目的唯一特点是模块3依赖于模块2并依赖于模块2也依赖的库. 下面我从模块2和模块3粘贴了poms.由于公司政策,我已经更改了一些名称. 模块-2- <project xmlns="http://maven.apache.org/POM/4.0.0" ... > <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.company</groupId> <artifactId>parent</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <artifactId>Module2</artifactId> <dependencies> <dependency> <groupId>com.company</groupId> <artifactId>Module1</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> <dependency> <groupId>com.company</groupId> <artifactId>SharedArtifact</artifactId> <version>1.1</version> </dependency> ... 模块-3- <project xmlns="http://maven.apache.org/POM/4.0.0" ... > <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.company</groupId> <artifactId>parent</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <artifactId>Module3</artifactId> <dependencies> <dependency> <groupId>com.company</groupId> <artifactId>Module2</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> <!--<dependency> <groupId>com.company</groupId> <artifactId>SharedArtifact</artifactId> <version>1.1</version> </dependency>--> ... 无法看到的包在’SharedArtifact’中.当我从Module2中删除依赖项时,它不会从’SharedArtifact’包中给出包不存在的错误.但是后来它给出了Module2 jar中不存在的包. 由于Module3依赖于它们,所以看起来某种程度上依赖关系会丢失. 我正在使用Java 1.6.0_29和Maven 3.0.5.而且我无法升级到Java 7,因为项目需要Java 6.并且无法升级Maven,导致升级的Maven仅适用于java 7及更高版本. 更新1: 编译时给出的错误如下: [ERROR] COMPILATION ERROR : [INFO] ------------------------------------------------------------- [ERROR] UsersusuarioDocumentsworkspacesmyworkspaceqaModule3srccomcompanysharedartifactpackageSomeClass.java:[8,55] package com.company.sharedartifact.package does not exist [ERROR] UsersusuarioDocumentsworkspacesmyworkspaceqaModule3srccomcompanysharedartifactpackageSomeClass.java:[9,55] package com.company.sharedartifact.package does not exist [ERROR] UsersusuarioDocumentsworkspacesmyworkspaceqaModule3srccomcompanysharedartifactpackageSomeClass.java:[17,85] cannot find symbol symbol : class SomeOtherClass 由于公司政策,我无法粘贴整个-X日志,但如果需要某些部分,我可以更改一些名称. 更新2: 今天我只是想通了如果运行mvn clean install,它就无法编译.但是如果我运行mvn clean,那么(在Eclipse中)我运行Maven Update项目然后`mvn install,它编译! 自从我发现这个以来,我已经提到了this question,我相信我的类路径有问题.当我使用Weblogic Portal应用程序时,我需要在Eclipse上保留一些共享库(项目和运行时都需要的共享库).可能有些图书馆在我的pom上被遗忘了.奇怪的是,编译声称不存在的包,DOES存在. 解决方法
由于我的选项不多,我按照@ user944849的建议并将Maven更新为版本3.3.9,将JDK更新为1.8.0_60,但保持源和目标指向1.6的POM编译器配置.
<plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.6</source> <target>1.6</target> </configuration> </plugin> 之后,模块3开始编译,但模块4和5由于对某些JRockit库的依赖而中断.为了解决这个问题,我最终更新了已弃用的代码,最终完全编译了项目. 所以我相信我使用的Maven版本存在问题.不知何故,当2个项目依赖于同一个lib并且其中一个依赖于另一个时,它似乎迷失了.我没有测试过其他版本,但3.3.9适用于这些情况. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |