메이븐의 "maven find symbol" 오류
저는 이것에 대한 스택 오버플로에 대한 많은 질문을 봅니다.하지만 여전히 프로젝트를 만드는 제 방식에 어떤 문제가 있는지 알 수 없습니다.
저는 두 개의 스프링 부트 프로젝트를 가지고 있습니다. We-data와 We-web.we-web은 We-data에 의존합니다. We-data는 메이븐에서 잘 컴파일됩니다.하지만 위 웹은 나에게 위의 오류를 줍니다.
w-data 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>com.we</groupId>
<artifactId>data</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>we-data</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.2.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</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>
</plugin>
</plugins>
</build>
</project>
웹 폼:
<?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>com.we</groupId>
<artifactId>web</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>we-web</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.2.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.we</groupId>
<artifactId>data</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
웹에서 "컴파일 패키지 설치 정리" 목표를 설정할 때마다 메이븐 오류가 발생합니다.이것이 불평하는 모든 기호는 우리 데이터 프로젝트에서 찾을 수 없습니다.어떤 이유에서인지 모든 종류의 We-data를 We-Web에서 찾을 수 없다고 합니다.하지만 앱을 스프링 부트 앱으로 실행하면 모든 것이 정상입니다.이 경우 메이븐 오류는 중요하지 않습니다.:
[INFO] ------------------------------------------------------------------------
[INFO] Building we-web 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.6.1:clean (default-clean) @ web ---
[INFO] Deleting C:\Users\user\Documents\GitHub\we\we-web\target
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ web ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ web ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 10 source files to C:\Users\user\Documents\GitHub\we\we-web\target\classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /C:/Users/user/Documents/GitHub/we/we-web/src/main/java/com/we/controller/EmployeeController.java:[13,25] package com.we.service does not exist
[ERROR] /C:/Users/user/Documents/GitHub/we/we-web/src/main/java/com/we/controller/EmployeePaymentController.java:[22,9] cannot find symbol
symbol: class EmployeeService
location: class com.we.controller.EmployeePaymentController
.
.
.
[INFO] 44 errors
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.322 s
[INFO] Finished at: 2016-12-26T15:30:54+05:30
[INFO] Final Memory: 26M/253M
[INFO] ------------------------------------------------------------------------
[WARNING] The requested profile "pom.xml" could not be activated because it does not exist.
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project web: Compilation failure: Compilation failure:
.
.
STS에서 1.8 jdk를 사용하고 있습니다.또한 저는 웹 데이터 프로젝트를 웹을 위한 빌드 경로에 넣지 않았습니다.저는 이것이 통과되기를 원합니다. 왜냐하면 저는 이것의 전쟁을 일으키고 싶기 때문입니다.제발 도와주세요.저는 웹 데이터에서 "클린 컴파일 패키지 설치"를 한 다음 웹에서 하고 있습니다."업데이트 메이븐 프로젝트" 또한 저에게 도움이 되지 않습니다.
저도 하루 동안 이 문제에 매달렸고 마침내 제가 한 일의 근본 원인과 해결책을 찾았습니다.
만약 당신이 당신의 폼에 다음과 같은 선이 있다면 (당신의 경우는 w-data의 폼입니다)
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
이러한 라인을 제거하고 다음으로 변경해야 합니다.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
</plugin>
M으로부터 단서를 얻은 후에. Deinum i는 그가 옳다는 것을 발견했습니다. 만약 당신이 병을 사용한다면 일반적인 병이 아닐 것입니다.spring-boot-maven-plugin
어쨌든 단서를 주셔서 감사합니다.
또한 다음 질문을 확인하십시오.Spring Boot 프로젝트에서 종속성을 찾을 수 없습니다.
저는 이것을 사용하려고 했습니다.
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<classifier>exec</classifier>
</configuration>
</execution>
</executions>
</plugin>
그것은 매력적으로 작동합니다.
웹에서 "컴파일 패키지 설치 정리" 목표를 설정할 때마다 메이븐 오류가 발생합니다.이것이 불평하는 모든 기호는 우리 데이터 프로젝트에서 찾을 수 없습니다.
메이븐폼에 대한 소개와 메이븐의 라이프사이클을 읽어보셔야 할 것 같습니다.
mvn clean compile package install
설치 단계에 다음 단계가 포함되므로 컴파일 및 패키지 단계에 중복됩니다.
mvn clean install
메이븐 목표를 실행하는 웹 모듈에는com.we:data:0.0.1-SNAPSHOT
실제 코드와의 종속성:
<dependency>
<groupId>com.we</groupId>
<artifactId>data</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
코드를 추가하거나 수정한 후 이 모듈을 설치하지 않으면 웹 모듈에서 이러한 변경 내용을 볼 수 없습니다.
그래서 당신은 해야 합니다.mvn clean install
에 시대에com.we:data
웹 모듈에서 수행하기 전에 웹 모듈에서 이 작업을 수행합니다.
되지 않은 방법은 실행하는 입니다.mvn clean install
이 모듈들을 통합하는 다중 스레드 프로젝트에서.
의 경우 Spring 과 같은 하고 단일 Spring Boot에서 되지 않은 했습니다.ServiceFoo.java
파일 이름:
@Service
public class ServiceFoo {
}
class Foo { }
class Bar { }
어느 순간 메이븐은 실패하기 시작했습니다.cannot find symbol: class Service
.
Foo와 Bar 클래스를 별도의 java 파일로 이동한 후에만 (Foo.java
그리고.Bar.java
각각) 오류가 사라졌습니다.메이븐(3.5.2 및 3.6.3) 또는 Java(1.8.0_201) 버그처럼 보입니다.
pom.xml에서 종속성 추가
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>
@InjectImportjavax.inject는 파일 이름입니다. 입import javax.inject.Inject
;
동일한 오류가 발생했습니다. "cannot symbol".
저는 앞뒤로 2개의 메이븐 모듈을 받았고, 의존성에도 불구하고 전면 모듈은 백 모듈에 접근할 수 없었습니다.
문제는 후면 모듈의 pom.xml에 있습니다.다음 행을 제거합니다.
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
그리고 방금 프론트 폼 모듈에 이 대사들을 넣었습니다.
언급URL : https://stackoverflow.com/questions/41329851/cannot-find-symbol-error-in-maven
'programing' 카테고리의 다른 글
Oracle의 In vs OR 중 어느 쪽이 더 빠릅니까? (0) | 2023.07.05 |
---|---|
아랍어 문자가 포함된 CSV 파일이 Excel에서 기호로 표시됩니다. (0) | 2023.07.05 |
iPhone Safari 웹 앱이 새 창에서 링크를 엽니다. (0) | 2023.07.05 |
Angular 8에서 API 응답으로 엑셀 파일을 다운로드하는 방법 (0) | 2023.07.05 |
Mac을 소유하지 않고 iOS 앱을 구축하시겠습니까? (0) | 2023.07.05 |