2016-12-27 65 views
0

我在这个问题上苦苦挣扎了一段时间,我在IntelliJ中有一个Maven项目,带有2个maven模块。在包中找不到其他Maven模块的类 - IntelliJ

当我在我的第二个模块的java文件夹(源根),当我创建一个类,我可以参考我的其他项目的类。但是当我在java文件夹中的包中时,我不再能够使用其他项目的类。

由于提前,

链接到图片: http://imgur.com/a/6wyYM

从父项目我的pom.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd"> 

<modelVersion>4.0.0</modelVersion> 
<packaging>pom</packaging> 

<groupId>com.ucll.da</groupId> 
<artifactId>project2</artifactId> 
<packaging>pom</packaging> 
<version>1.0-SNAPSHOT</version> 

<modules> 
    <module>domain</module> 
    <module>webApp</module> 
    <module>rest</module> 
</modules> 

</project> 

从域和休息的POM文件基本相同:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd"> 

<parent> 
    <artifactId>project2</artifactId> 
    <groupId>com.ucll.da</groupId> 
    <version>1.0-SNAPSHOT</version> 
</parent> 

<modelVersion>4.0.0</modelVersion> 
<packaging>jar</packaging> 
<artifactId>domain</artifactId> 

</project> 
+0

图片显示了模块中不同包中的两个类。你的意思是包装而不是模块? – swiedsw

+0

不,我有一个其他的Maven模块(称为“域”),它具有ObservationService类。在我的'rest'模块中,我只能在java文件夹中的类中使用ObservationService,而不能在java文件夹下的包中使用。 – denelias

+0

我建议您使用pom.xml和包结构中的相关依赖关系片断更新您的问题。 – swiedsw

回答

0

我发现我的溶胶但我不知道它为什么现在起作用。

第一个Maven模块(域)中的我的java文件不在包内,就在映射Java内部。当我在这个Java映射中创建一个新包并将所有的java文件移动到那里时,我可以在其他Maven模块中使用这些类。

+0

当您将类放置为'/ src/main/java'的子元素时,它们将成为未命名包的一部分。不鼓励使用未命名的软件包,请参阅此问题http://stackoverflow.com/q/7849421/6850448。您不能从命名包中导入未命名包中的类。 – swiedsw

+0

谢谢你的解释:) – denelias