5

이 문제에 대한 많은 질문이 있습니다. 그러나 여전히 프로젝트를 건설하는 방식에서 어떤 문제인지 알 수 없습니다."심볼을 찾을 수 없습니다."라는 메시지가 표시됩니다.

저는 두 가지 스프링 부트 프로젝트를 가지고 있습니다 : we-data와 we-web. 우리 웹은 우리 데이터에 의존합니다. we-data는 maven에서 잘 컴파일됩니다. 그러나 우리 웹은 저를 위의 오류를줍니다.

우리-데이터 치어 :

<?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를 사용하고 있습니다. 또한 we-data 프로젝트를 we-web의 빌드 경로에 두지 않았습니다. 나는이 전쟁을 일으키기 원하기 때문에 이것을 통과시키고 싶다. 도와주세요. 나는 we-data에서 "clean compile package install"을하고 we-web에서하고있다. "Update maven project"도 도움이되지 않습니다.

+0

패키지 불일치로 보입니다. pls가 가져 오기를 수정하고이 'com.we.service does not exist'를 해결합니다. 희망이 빌드를 해결한다 –

+0

@ClementAmarnath : 아니요, 패키지 가져 오기 괜찮아. 그게 사실이라면 나는 우리 웹을 운영해서는 안된다. 그러나 잘 돌아갑니다. 내가 빌드 할 때만 오류가 발생합니다. 두 프로젝트 모두에서 같은 종류의 패키지 구조를 사용합니다. 문제가 생길 수 있습니까? 질문을 업데이트했습니다. – User1230321

+0

그런 경우, we-data에 대해 .m2를 삭제하고 we-data를 빌드 한 다음 we-web을 삭제하십시오 –

답변

2

언제든지 우리 웹에서 "clean package package install"목표를 수행합니다. maven 오류가 발생합니다. 이 불평하는 모든 기호는 찾을 수 없습니다. 은 모두 우리 데이터 프로젝트에 있습니다.

1) Maven pom herelifecycle in Maven에 대한 소개를 읽어야한다고 생각합니다. 당신이 받는다는 목표를 실행하는 웹 모듈이 필요합니다 위상이 단계를 포함하는 설치 이후

mvn clean compile package install 


컴파일 및 패키지 단계에 대한 중복 (.

mvn clean install 

2 그래서,이 만 수행) 실제 코드로 com.we:data:0.0.1-SNAPSHOT 의존성 :

<dependency> 
     <groupId>com.we</groupId> 
     <artifactId>data</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 
    </dependency> 

추가하거나 코드를 수정하고이 MODUL를 설치하지 않은 경우 e, 웹 모듈은 이러한 변경 사항을 볼 수 없습니다.

따라서 웹 모듈에서 수행하기 전에 com.we:data 모듈에서 mvn clean install을 수행해야합니다.

마지막으로 종속성을 업데이트하지 않는 것이 가장 간단한 방법은 이러한 모듈을 집계하는 multi-module project에서 mvn clean install을 실행하는 것입니다.

+0

저는 먼저 우리 데이터를 구축하고 we-web을 구축했습니다. 하지만 지금은 "mvn clean install"대신 "mvn clean package package install"(고맙습니다)을하고 있습니다. 작동하지 않습니다. 나는 당신이 제안한대로 다중 모듈 프로젝트를 생성하고 싶습니다. 하지만 다중 모듈 "스프링 부트"프로젝트 (스프링 부트 모듈인데도 용서해주십시오)를 만드는 방법을 모르겠습니다. 당신이 나를 도울 수 있다면 알려주거나 stackoverflow에 대한 새로운 질문을 열어야한다. – User1230321

+0

당신은 환영합니다. "그건 작동하지 않아." 다중 모듈 프로젝트를 갖는 것은 컴파일 타임에 누락 된 클래스를 해결하지 못합니다. 모든 것이 주문됨에 따라보다 견고한 빌드 만 가질 수 있습니다. 오류를 자세하게 설명하고 게시물을 편집하고 모든 관련 정보 (예 : 클래스가 누락 된 패키지)를 표시 할 수 있습니까? – davidxxx

10

나는 하루도이 문제에 붙어 그리고 마지막으로 내가 무슨 짓을했는지 근본 원인 여기에 솔루션을 발견했습니다 당신이 (당신의 치어에 다음 줄이있는 경우

사건이이기을 우리는 데이터 당신이 그 라인을 제거하고로 변경해야

<plugin> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-maven-plugin</artifactId> 
    </plugin> 

POM) :

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-jar-plugin</artifactId> 
</plugin> 

후 0123에서 실마리를 얻었다어쨌든 단서를 주셔서 감사합니다. spring-boot-maven-plugin을 사용하면 컴파일 된 항아리가 정상적인 항아리가 아닐 것입니다.

또한이 질문에 확인하시기 바랍니다 :이 사용하려고했습니다 Dependency not found in Spring Boot project

:

<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> 

그것이 매력처럼 작동합니다. pom.xml 파일에서

+0

나를 위해 일했습니다 .. 스프링 부트 항아리 의존성이 기본적으로 작동하지 않았습니다. – inaitgaJ

0

, 당신은 @Inject 가져 오기 javax.inject.Inject로 import javax.inject.Inject을 사용하는 경우 depedency에게

<dependency> 
    <groupId>javax.inject</groupId> 
    <artifactId>javax.inject</artifactId> 
    <version>1</version> 
</dependency> 

및 클래스를 추가;

관련 문제