wake-up-neo.net

In maven wurde kein Symbol gefunden

Ich sehe dazu viele Fragen zu stackoverflow. Trotzdem kann ich immer noch nicht wissen, worauf es bei meinen Projekten ankommt. 

Ich habe zwei Spring-Boot-Projekte: we-data und we-web. we-web ist abhängig von we-data. we-data kompiliert gut auf maven. Aber we-web gibt mir oben Fehler. 

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

Jedes Mal, wenn ich die "Clean Compile Package Install" -Ziele auf We-Web durchführe, erhalte ich den Maven-Fehler. Alle Symbole, für die sich dieser Fehler nicht findet, befinden sich alle im Projekt we-data. Aus irgendeinem Grund heißt es, dass alle Klassen von we-data nicht in we-web gefunden werden können. Aber wenn ich die Anwendung als Spring Boot App starte, ist alles in Ordnung. Es ist kein Fehler von Bedeutung:

[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:
.
.

Ich habe 1,8 jdk, die vom STS verwendet werden. Und ich habe das we-data-Projekt nicht auf build path für we-web gestellt. Ich möchte, dass dies passiert, weil ich einen Krieg daraus generieren möchte. Bitte helfen Ich mache "clean compile package install" für we-data und dann bei we-web. "Update maven project" hilft mir auch nicht.

6
User1230321

Ich bin auch schon seit einem Tag mit diesem Problem beschäftigt und habe hier endlich die Ursache und Lösung gefunden, was ich getan habe:

wenn Sie die folgenden Zeilen auf Ihrem POM haben (für Ihren Fall ist das We-Data's POM)

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

sie sollten diese Zeilen entfernen und in Folgendes ändern:

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

nachdem ich eine Ahnung von M. Deinum Ich habe festgestellt, dass er in Bezug auf das kompilierte Glas Recht hat. Wenn Sie spring-boot-maven-plugin Verwenden, ist es kein normales Glas. Trotzdem danke für den Hinweis.

und bitte überprüfen Sie auch diese Frage: Abhängigkeit nicht in Spring Boot-Projekt gefunden

Ich habe versucht, dies zu verwenden:

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

es wirkt wie ein Zauber.

24
Sal Prima

Jedes Mal, wenn ich die "Clean Compile Package Install" -Ziele auf we-web I Holen Sie sich den Maven-Fehler. Alle Symbole, über die sich diesbezieht, werden nicht gefunden sind alle in we-data projekt.

1) Ich denke, Sie sollten die Einführung zu Maven pom here und lifecycle in Maven lesen.

mvn clean compile package install

ist für Kompilierungs- und Package-Phasen überflüssig, da die Installationsphase diese Phasen umfasst (. Tun Sie dies nur:

mvn clean install

2) Ihr Webmodul, in dem Sie das Maven-Ziel ausführen, erfordert die com.we:data:0.0.1-SNAPSHOT-Abhängigkeit mit Ihrem tatsächlichen Code:

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

Wenn Sie Code hinzufügen oder ändern und dieses Modul nicht installieren, kann das Webmodul diese Änderungen nicht sehen.

Sie sollten also mvn clean install im Modul com.we:data tun, bevor Sie dies im Webmodul tun.

Schließlich ist es am einfachsten, eine nicht aktualisierte Abhängigkeit zu vermeiden, mvn clean install von einem multi-module-Projekt auszuführen, das diese Module zusammenfasst.

3
davidxxx

Fügen Sie in pom.xml Abhängigkeit hinzu

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

und Klasse, in der Sie @Inject Import verwenden javax.inject.Inject import javax.inject.Inject;

0
Dinesh Sharma