Java 如何解决maven编译错误:包X不存在?
我有3个maven项目:Java 如何解决maven编译错误:包X不存在?,java,eclipse,maven,pom.xml,spring-tool-suite,Java,Eclipse,Maven,Pom.xml,Spring Tool Suite,我有3个maven项目: project-A project-B project-C 第二个项目(B)需要第一个项目(A)的依赖关系。 第三个项目(C)需要第一个和第二个项目(A,B)的依赖关系。 我在各自的项目pom文件中定义了这些依赖项: project-B pom.xml: <dependency> <groupId>com.mygroupid</groupId> <artifactId>projec
project-A
project-B
project-C
第二个项目(B)需要第一个项目(A)的依赖关系。
第三个项目(C)需要第一个和第二个项目(A,B)的依赖关系。
我在各自的项目pom
文件中定义了这些依赖项:
project-B pom.xml
:
<dependency>
<groupId>com.mygroupid</groupId>
<artifactId>project-A</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.mygroupid</groupId>
<artifactId>project-A</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.mygroupid</groupId>
<artifactId>project-B</artifactId>
<version>${project.version}</version>
</dependency>
在SpringToolSuite
上一切正常。我已经测试了第二个项目(取决于第一个项目),也测试了第三个项目(取决于第一个和第二个项目),STS的一切正常
当我尝试执行时:
mvn清理安装-U-DskipTests=true
它对于project-A
和project-B
非常有效,但是对于project-C
我得到了一个:
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] MyClassOnProjectC.java:[12,38] package XXX does not exist
[ERROR] MyClassOnProjectC.java:[22,17] cannot find symbol
symbol: class MyClassOnProjectB
location: class MyClassOnProjectC
以下是从每个项目中提取的3个类:
project-A
project-B
project-C
项目A:
User.java
package com.neweraed.datamodel;
import java.io.Serializable;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlType;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "UserType", propOrder = {
"name",
"description",
})
public class User implements Serializable {
private static final long serialVersionUID = -876063526825526098L;
private String name;
private String description;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
项目B:
UserOperations.java
package com.neweraed.services.midpoint;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestOperations;
import com.neweraed.datamodel.User;
import com.neweraed.services.midpoint.utils.Constants;
import com.neweraed.services.midpoint.utils.Utils;
@Component
public class UserOperations {
private static final Logger logger = LoggerFactory.getLogger(UserOperations.class);
public User getUser(User user) {
RestOperations restOperations = Utils.createGenericRestTemplate();
ResponseEntity<User> response = null;
try {
response = restOperations.exchange(Constants.ENDPOIT_SEARCH_USER, HttpMethod.GET, new HttpEntity<Object>(Utils.createHeaders()), User.class);
logger.info("=== RESPONSE ===" + response + " === ");
} catch (Exception e) {
logger.error("=== ERROR === " + e.getMessage() + " === ");
}
return user;
}
}
我的pom.xml文件似乎一切正常。我怎样才能解决这个问题 根据您的前提,项目B的
pom.xml
必须是:
<dependency>
<groupId>com.mygroupid</groupId>
<artifactId>project-A</artifactId>
<version>${project.version}</version>
</dependency>
com.mygroupid
项目A
${project.version}
项目C不需要依赖于A,因为它是在B上定义的Yes correct。我尝试从project-C的pom.xml中删除project-A的依赖项并重新执行该命令,但我得到了相同的错误A和B的包装类型是pom?否,A和B的打包类型是JAR,没有项目的更多细节,我会尝试将它们更改为pom,并且执行clean install命令againI解决了将三个项目的打包类型更改为pom的问题