programing

메이븐의 "maven find symbol" 오류

magicmemo 2023. 7. 5. 20:36
반응형

메이븐의 "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

반응형