web-dev-qa-db-ja.com

Mavenの「シンボルが見つかりません」エラー

これに関するstackoverflowに関する質問がたくさんあります。それでも、プロジェクトを構築する上での問題は何かを知ることはできません。

We-dataとwe-webの2つのスプリングブートプロジェクトがあります。 we-webはwe-dataに依存しています。 we-dataはmavenで正常にコンパイルされます。しかし、we-webでは上記のエラーが発生します。

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

we-web 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>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-webでmavenの「クリーンコンパイルパッケージインストール」の目標を実行するたびに、mavenエラーが発生します。これが不平を言うすべてのシンボルが見つからないのは、すべてwe-dataプロジェクトにあります。何らかの理由で、we-webでwe-dataのすべてのクラスを見つけることができないと書かれています。しかし、アプリケーションをスプリングブートアプリとして実行すると、すべて問題ありません。これにはMavenエラーは関係ありません。

[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-webのビルドパスにwe-dataプロジェクトを配置していません。私はこれの戦争を引き起こしたいので、これを通過させたいです。助けてください。 we-dataで「クリーンコンパイルパッケージインストール」を実行してから、we-webで実行しています。 「Mavenプロジェクトの更新」も役に立たない。

11
User1230321

私も1日この問題にこだわって、最終的に私がやったことの根本原因と解決策を見つけました:

pomに次の行がある場合(あなたの場合はwe-data'spomです)

    <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 から手がかりを得た後、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>

それは魅力のように機能します。

24
Sal Prima

We-webでmavenの「クリーンコンパイルパッケージインストール」の目標を実行するたびに、mavenエラーが発生します。これが不平を言うすべてのシンボルが見つからないのは、すべてwe-dataプロジェクトにあります。

1)Maven pom here および Mavenのライフサイクル に関する紹介を読むべきだと思います。

mvn clean compile package install

インストールフェーズにはこれらのフェーズが含まれているため、コンパイルおよびパッケージフェーズでは冗長です。

mvn clean install

2)Mavenゴールを実行するWebモジュールには、com.we:data:0.0.1-SNAPSHOT実際のコードとの依存関係:

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

コードを追加または変更し、このモジュールをインストールしない場合、Webモジュールはこれらの変更を認識できません。

したがって、mvn clean install の中に com.we:dataモジュールをWebモジュールで実行する前に。

最後に、更新されていない依存関係を回避する最も簡単な方法は、mvn clean install from multi-module project これらのモジュールを集約します。

4
davidxxx

Pom.xmlで、依存関係を追加します

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

@Injectを使用しているクラスImport javax.inject.Inject import javax.inject.Inject;

0
Dinesh Sharma