Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Maven多模块项目破坏编译时类解析_Java_Eclipse_Maven 2_Compiler Errors - Fatal编程技术网

Java Maven多模块项目破坏编译时类解析

Java Maven多模块项目破坏编译时类解析,java,eclipse,maven-2,compiler-errors,Java,Eclipse,Maven 2,Compiler Errors,我以前管理过一个3模块的项目,作为3个独立的maven项目。随着这个项目的推进,我决定应该利用maven2的依赖关系管理来简化这3个不断发展的模块之间的集成 我定义了一个部署为POM的超级项目。这里定义了一些共享依赖项,并且在POM中按照从依赖性最小的模块到依赖性最大的模块的顺序定义了模块。每个模块都有一个返回到父模块的POM定义,在它应用的地方,一个模块与另一个模块的已部署工件之间存在依赖关系。我将在最后包括可能值得的pom.xml行 关于这个问题,我昨天设置了这个项目,能够让每个模块独立构建

我以前管理过一个3模块的项目,作为3个独立的maven项目。随着这个项目的推进,我决定应该利用maven2的依赖关系管理来简化这3个不断发展的模块之间的集成

我定义了一个部署为POM的超级项目。这里定义了一些共享依赖项,并且在POM中按照从依赖性最小的模块到依赖性最大的模块的顺序定义了模块。每个模块都有一个返回到父模块的POM定义,在它应用的地方,一个模块与另一个模块的已部署工件之间存在依赖关系。我将在最后包括可能值得的pom.xml行

关于这个问题,我昨天设置了这个项目,能够让每个模块独立构建和工作。然后我今天回来处理其中一个模块,现在有了一些新的需求,突然间一切都崩溃了。我在Eclipse中编辑项目,每次修改一个文件时,它都无法解析同一项目中定义的任何类。也就是说,如果我有一个类foo.bar.class1,它有一个对象foo.bar.class2,Eclipse(以及整个编译器)会抱怨它无法解析类foo.bar.class2。。。现在这让我大吃一惊,因为另一个类在同一个项目和包中。不在同一包中的类也存在类似问题

在我的maven设置中是否存在一些问题,或者有人知道为什么这些项目甚至不能在同一个包中解析类吗

-::POMs::-

父级->/path/to/project/mainApp

<modelVersion>4.0.0</modelVersion>
<groupId>com.moremagic</groupId>
<artifactId>mainApp</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>Main App</name>

<modules>
    <module>Broker</module>
    <module>Soap</module>
    <module>UI</module>
</modules>
4.0.0
com.moremagic
主应用程序
0.0.1-快照
聚甲醛
主应用程序
经纪人
香皂
用户界面
Broker->/path/to/project/mainApp/Broker

 <parent>
   <artifactId>mainApp</artifactId>
   <groupId>com.moremagic</groupId>
   <version>0.0.1-SNAPSHOT</version>
   <relativePath>../</relativePath>
 </parent>

 <modelVersion>4.0.0</modelVersion>

 <groupId>com.moremagic</groupId>
 <artifactId>Broker</artifactId>
 <version>1.0-SNAPSHOT</version>
 <packaging>jar</packaging>

主应用程序
com.moremagic
0.0.1-快照
../
4.0.0
com.moremagic
经纪人
1.0-快照
罐子
Soap->/path/to/project/mainApp/Soap

<parent>
  <artifactId>mainApp</artifactId>
  <groupId>com.moremagic</groupId>
  <version>0.0.1-SNAPSHOT</version>
  <relativePath>../</relativePath>
</parent>

<modelVersion>4.0.0</modelVersion>

<groupId>com.moremagic</groupId>
<artifactId>SOAP</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>

...

<dependency>
    <groupId>com.moremagic</groupId>
    <artifactId>Broker</artifactId>
    <version>1.0-SNAPSHOT</version>
    <type>jar</type>
    <scope>compile</scope>
</dependency>

...

主应用程序
com.moremagic
0.0.1-快照
../
4.0.0
com.moremagic
肥皂
1.0-快照
罐子
...
com.moremagic
经纪人
1.0-快照
罐子
编译
...
UI->/path/to/project/mainApp/UI

<parent>
  <artifactId>mainApp</artifactId>
  <groupId>com.moremagic</groupId>
  <version>0.0.1-SNAPSHOT</version>
  <relativePath>../</relativePath>
</parent>

<modelVersion>4.0.0</modelVersion>
<groupId>com.moremagic</groupId>
<artifactId>UI</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>

...


<dependency>
  <groupId>com.moremagic</groupId>
  <artifactId>SOAP</artifactId>
  <version>1.0-SNAPSHOT</version>
  <scope>compile</scope>
</dependency>
<dependency>
  <groupId>com.moremagic</groupId>
  <artifactId>Broker</artifactId>
  <version>1.0-SNAPSHOT</version>
  <type>jar</type>
  <scope>compile</scope>
</dependency>

...

主应用程序
com.moremagic
0.0.1-快照
../
4.0.0
com.moremagic
用户界面
1.0-快照
战争
...
com.moremagic
肥皂
1.0-快照
编译
com.moremagic
经纪人
1.0-快照
罐子
编译
...

听起来问题在于Eclipse设置,而不是Maven

mvn compile
是否在项目中通过命令行工作?来自父项目和每个单独模块(在对依赖项执行
mvn安装之后)


您是否在为Eclipse使用Maven插件,例如m2eclipse?检查它是否配置为从Eclipse中加载依赖项目,而不是查看存储库(“启用工作区解析”)。如果您执行
Project
Clean
以清除所有项目,会发生什么情况?

似乎就是这样。奇怪,但是感谢你的提示(特别是Eclipse中的Project>Clean)。m2eclipse可能很棒,但有时它真的会让人恼火-我经常不得不做Project>Clean来让Eclipse看到类路径上的资源,等等。该死,就是这样。我还操纵了相关项目,突然出现了这个问题。项目>清理修复了我的问题。非常感谢。