SpringBoot, auf dem das MapReduce-Programmverpackungs-Plug-In ausgeführt wird, führt dazu, dass die Klasse nicht gefunden wird

Programmstruktur

Fügen Sie hier eine Bildbeschreibung ein
Beschreibung: Eine sehr verbreitete Springboot-Struktur

Verwendung des Plug-Ins für die Verpackung von POM-Dateien

<build>
<plugins>
    <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.3.2</version>
        <configuration>
            <source>1.8</source>
            <target>1.8</target>
        </configuration>
    </plugin>
    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
            <fork>true</fork>
            <mainClass>com.example.springbootintegrationtest.hadoop.mapreduce.WordCountDriver</mainClass>
        </configuration>
        <executions>
            <execution>
                <goals>
                    <goal>repackage</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
</plugins>
</build>

Beschreibung: Es befindet sich im mainClass-Modus, jedoch nicht in diesem Plug-In

Entpacken Sie, um die JAR-Struktur anzuzeigen

Fügen Sie hier eine Bildbeschreibung ein
Hinweis: Dies ist die Struktur der Standardverpackung von springboot. Sie wird wie ein normales JAR ausgeführt. Standardmäßig befindet sie sich unter org, und unser WordCount-Programmcode befindet sich unter BOOT_INF, sodass die Klasse nicht gefunden werden kann

Fehler melden (Klassen zuordnen und reduzieren konnte nicht gefunden werden)

Fügen Sie hier eine Bildbeschreibung ein
Beschreibung: Verwenden Sie hadoop jar, um den Fehler auszuführen, und die Klasse kann nicht gefunden werden

Verwenden Sie das verpackte Plugin im offiziellen Fall von Hadoop

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>com.example.springbootintegrationtest.hadoop.mapreduce.WordCountDriver
                        </mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>findbugs-maven-plugin</artifactId>
            <configuration>
                <findbugsXmlOutput>true</findbugsXmlOutput>
                <xmlOutput>true</xmlOutput>
                <effort>Max</effort>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.rat</groupId>
            <artifactId>apache-rat-plugin</artifactId>
        </plugin>
    </plugins>
</build>

Beschreibung: Es handelt sich um org.apache.maven.plugins

Verwenden Sie mvn install, um die Verzeichnisstruktur anzuzeigen

Fügen Sie hier eine Bildbeschreibung ein
Hinweis: Ihre wordCount-bezogenen Klassen befinden sich alle im com-Paket

Laufende Ergebnisse anzeigen

Fügen Sie hier eine Bildbeschreibung ein
Beschreibung: Führen Sie den Mapreduce-Job erfolgreich aus

um zusammenzufassen

Wenn Sie das Problem nicht finden können, müssen Sie auf die offizielle Website gehen, um es zu finden. Ich habe 8 Stunden lang gesucht und schließlich nur auf das offizielle Beispiel verwiesen.

Ich denke du magst

Origin blog.csdn.net/weixin_38312719/article/details/115060411
Empfohlen
Rangfolge