大家好,我刚刚开始学习Spring。我在进行Maven打包时遇到以下错误
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.0:compile (default-compile) on project pet-clinic-web: Compilation failure: Compilation failure:
[ERROR] /C:/Users/user/Dropbox/yyy/spring/frameworkGuru/my-pet-clinic/pet-clinic-web/src/main/java/xxx/xxx/mypetclinic/controllers/OwnerController.java:[3,45] package xxx.xxx.mypetclinic.services does not exist
[ERROR] /C:/Users/user/Dropbox/yyy/spring/frameworkGuru/my-pet-clinic/pet-clinic-web/src/main/java/xxx/xxx/mypetclinic/controllers/OwnerController.java:[12,19] cannot find symbol
[ERROR] symbol: class OwnerService
[ERROR] location: class xxx.xxx.mypetclinic.controllers.OwnerController
[ERROR] /C:/Users/user/Dropbox/yyy/spring/frameworkGuru/my-pet-clinic/pet-clinic-web/src/main/java/xxx/xxx/mypetclinic/controllers/OwnerController.java:[14,28] cannot find symbol
[ERROR] symbol: class OwnerService
[ERROR] location: class xxx.xxx.mypetclinic.controllers.OwnerController
[ERROR] -> [Help 1]
我有2个模块 data 和 web ,我正试图从OwnerController(web-> controllers)访问OwnerService(data-> services)。我已经将数据模块添加为Web pom中的依赖项
Intellij不会显示错误,我什至可以列出所有所有者,但效果很好,但是我尝试打包并显示错误。这是一些项目文件。
我尝试使用较早的Spring Boot版本2.0.3,该错误消失了,但是在2.1.1中仍然存在。
项目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">
<modelVersion>4.0.0</modelVersion>
<groupId>xxx.xxx</groupId>
<artifactId>my-pet-clinic</artifactId>
<version>0.0.2-SNAPSHOT</version>
<modules>
<module>pet-clinic-data</module>
<module>pet-clinic-web</module>
</modules>
<packaging>pom</packaging>
<name>my-pet-clinic</name>
<description>My recode of spring pet clinic</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.1.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<properties>
<java.version>9</java.version>
<start-class>xxx.xxx.mypetclinic.MyPetClinicApplication</start-class>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<!--<version>2.5.3</version>-->
<configuration>
<goals>install</goals>
<autoVersionSubmodules>true</autoVersionSubmodules>
</configuration>
</plugin>
</plugins>
</build>
</project>
数据pom
<parent>
<artifactId>my-pet-clinic</artifactId>
<groupId>xxx.xxx</groupId>
<version>0.0.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>pet-clinic-data</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<executable>true</executable>
</configuration>
</plugin>
</plugins>
</build>
网络pom
<parent>
<artifactId>my-pet-clinic</artifactId>
<groupId>xxx.xxx</groupId>
<version>0.0.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>pet-clinic-web</artifactId>
<properties>
<!-- Web dependencies -->
<webjars-bootstrap.version>3.3.6</webjars-bootstrap.version>
<webjars-jquery-ui.version>1.11.4</webjars-jquery-ui.version>
<webjars-jquery.version>2.2.4</webjars-jquery.version>
<wro4j.version>1.8.0</wro4j.version>
</properties>
<dependencies>
<dependency>
<artifactId>pet-clinic-data</artifactId>
<groupId>xxx.xxx</groupId>
<version>0.0.2-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>webjars-locator-core</artifactId>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>jquery</artifactId>
<version>${webjars-jquery.version}</version>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>jquery-ui</artifactId>
<version>${webjars-jquery-ui.version}</version>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>bootstrap</artifactId>
<version>${webjars-bootstrap.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>
OwnerController
package xxx.xxx.mypetclinic.controllers;
import xxx.xxx.mypetclinic.services.OwnerService;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@RequestMapping("/owners")
@Controller
public class OwnerController {
private final OwnerService ownerService;
public OwnerController(OwnerService ownerService) {
this.ownerService = ownerService;
}
@RequestMapping({"","/","/index", "/index.html"})
public String listOwners(Model model){
model.addAttribute("owners",ownerService.findAll());
return "owners/index";
}
}
OwnerService
package xxx.xxx.mypetclinic.services;
import xxx.xxx.mypetclinic.model.Owner;
public interface OwnerService extends CrudService<Owner, Long>{
Owner findByLastName(String lastName);
}
和OwnerServiceMap实现
package xxx.xxx.mypetclinic.services.map;
import xxx.xxx.mypetclinic.model.Owner;
import xxx.xxx.mypetclinic.services.OwnerService;
import org.springframework.stereotype.Service;
import java.util.Set;
@Service
public class OwnerServiceMap extends AbstractMapService<Owner, Long> implements OwnerService {
@Override
public Set<Owner> findAll() {
return super.findAll();
}
@Override
public Owner findById(Long id) {
return super.findById(id);
}
@Override
public Owner save(Owner object) {
return super.save(object);
}
@Override
public void delete(Owner object) {
super.delete(object);
}
@Override
public void deleteById(Long id) {
super.deleteById(id);
}
@Override
public Owner findByLastName(String lastName) {
return null;
}
}
答案 0 :(得分:0)
我认为您缺少
<dependencyManagement>
<dependencies>
<dependency>
<!-- Import dependency management from Spring Boot -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>SPRING-BOOT-VERSION-HERE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
来自您的pom.xml
。
有关更多详细信息,请参见:https://stackoverflow.com/a/21318359/2891426