Fehler beim Ausführen des Ziels org.codehaus.mojo: exec-maven-plugin: 1.5.0: exec

10

Vor drei Wochen hatte ich die Arbeit an einer Webanwendung beendet. Alles lief ohne Probleme.

Jetzt, drei Wochen später, nachdem ich nichts geändert hatte (!!!), wollte ich die Anwendung erneut ausführen, aber diesmal erhielt ich die folgende Fehlermeldung:

 An error occurred while parsing the server response. Error message is: Provider org.glassfish.json.JsonProviderImpl not found
Exception in thread "main" com.michael.optimizer.exceptions.JsonException: This is a general JSON error. Check logs for details.)
    at com.michael.optimizer.api.JsonRequest.doJsonRequest(JsonRequest.java:36)
    at com.michael.optimizer.api.StationApi.doJsonRequest(StationApi.java:150)
    at com.michael.optimizer.api.StationApi.areaSearch(StationApi.java:73)
    at com.michael.optimizer.Optimizer.main(Optimizer.java:23)
Command execution failed.
org.apache.commons.exec.ExecuteException: Process exited with an error: 1 (Exit value: 1)
    at org.apache.commons.exec.DefaultExecutor.executeInternal(DefaultExecutor.java:404)
    at org.apache.commons.exec.DefaultExecutor.execute(DefaultExecutor.java:166)
    at org.codehaus.mojo.exec.ExecMojo.executeCommandLine(ExecMojo.java:764)
    at org.codehaus.mojo.exec.ExecMojo.executeCommandLine(ExecMojo.java:711)
    at org.codehaus.mojo.exec.ExecMojo.execute(ExecMojo.java:289)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
------------------------------------------------------------------------
BUILD FAILURE
------------------------------------------------------------------------
Total time: 5.823 s
Finished at: 2020-04-23T20:20:56+02:00
Final Memory: 7M/123M
------------------------------------------------------------------------
Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.5.0:exec (default-cli) on project optimizer: Command execution failed. Process exited with an error: 1 (Exit value: 1) -> [Help 1]

To see the full stack trace of the errors, re-run Maven with the -e switch.
Re-run Maven using the -X switch to enable full debug logging.

For more information about the errors and possible solutions, please read the following articles:
[Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

Was ist hier los?


Der Inhalt meiner Datei pom.xml lautet wie folgt:

<?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.michael</groupId>
    <artifactId>optimizer</artifactId>
    <version>1.0-SNAPSHOT</version>


    <name>optimizer</name>

    <properties>
        <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                    <compilerArguments>
                        <endorseddirs>${endorsed.dir}</endorseddirs>
                    </compilerArguments>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.3</version>
                <configuration>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>2.6</version>
                <executions>
                    <execution>
                        <phase>validate</phase>
                        <goals>
                            <goal>copy</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${endorsed.dir}</outputDirectory>
                            <silent>true</silent>
                            <artifactItems>
                                <artifactItem>
                                    <groupId>javax</groupId>
                                    <artifactId>javaee-endorsed-api</artifactId>
                                    <version>7.0</version>
                                    <type>jar</type>
                                </artifactItem>
                            </artifactItems>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    <dependencies>
        <dependency>
            <groupId>org.mongodb</groupId>
            <artifactId>mongo-java-driver</artifactId>
            <version>3.4.1</version>
            <type>jar</type>
        </dependency>
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-web-api</artifactId>
            <version>7.0</version>
            <type>jar</type>
        </dependency>
    </dependencies>
</project>
stetige Fortschritte
quelle
Haben Sie versucht, Glassfish bereitzustellen? Welchen Befehl führen Sie genau aus? Haben Sie den Server neu installiert?
Acm
1
Ich benutze den Payara-Server, nicht den Glassfish-Server. Aber diese beiden scheinen eng miteinander verbunden zu sein.
stetiger Fortschritt
3
Haben Sie überprüft, ob die Abhängigkeit org.glassfish: javax.json vorhanden ist? Siehe stackoverflow.com/questions/47022653/… und stackoverflow.com/questions/33083050/…, wo in beiden Fällen die fehlende Abhängigkeit das Problem war ...
blagerweij
1
Die JSON-Abhängigkeit sollte vom Anwendungsserver bereitgestellt werden. Siehe zum Beispiel: stackoverflow.com/questions/57726562/…
assylias
Rüsten Sie Ihren maven Version auf die neueste - 3.6.3 und wieder aufzubauen
Ashish Patel

Antworten:

3

@Anish B.: Die javax.json-Abhängigkeit hat die JsonProvider-Implementierungsklasse als Abhängigkeit (wie von Code_Mode angegeben) ... aber (wie von assylias hervorgehoben) wird tatsächlich nicht einmal die javax.json-Abhängigkeit als Anwendungsserver benötigt sollte diese Abhängigkeit bereitstellen.

Michael
quelle
Tatsächlich habe ich ein Problem mit dem Server (siehe stackoverflow.com/questions/61445520/… ). Es ist sinnvoll, dass alles vom Server bereitgestellt wird, da ich es nicht getan habe, als der Server reibungslos lief (vor 3 Wochen) Diese Abhängigkeiten müssen nicht in die Datei pom.xml eingefügt werden. Ohne das haben die Dinge funktioniert. Das bedeutet, dass sie vom Anwendungsserver bereitgestellt wurden
stetiger Fortschritt
@Code_Mode: Es scheint, dass die Datei pom.xml überhaupt nicht erweitert werden muss ... das Problem ist anscheinend, dass der Server nicht so funktioniert, wie er sollte ... also die Lösung für diese Frage: stackoverflow.com/ Fragen / 61445520 /… wird auch die Antwort auf die hier gestellte Frage sein. ... also wer eine Lösung für diese andere Frage findet, erhält die 500-Punkte-Prämie
stetiger Fortschritt
1
@Anish B.: Es scheint, dass die Datei pom.xml überhaupt nicht erweitert werden muss ... das Problem ist anscheinend, dass der Server nicht so funktioniert, wie er sollte ... also die Lösung für diese Frage: Stackoverflow. com / question / 61445520 /… wird auch die Antwort auf die hier gestellte Frage sein. ... also wer eine Lösung für diese andere Frage findet, erhält die 500-Punkte-Prämie
stetiger Fortschritt
@steady_progress Ok !! Können Sie Ihre Codebasis zum Testen freigeben? Ich werde den Payara-Anwendungsserver selbst herunterladen.
Anish B.
@steady_progress Bitte fügen Sie auch die Payara-Serverversion hinzu. Ich werde versuchen, das Problem zu lösen.
Anish B.
6

Sie verwenden die javaee-web-apiAbhängigkeit und die javax.json.spi.JsonProvider.classKlassendatei entspricht nicht der tatsächlichen Implementierung.

Sie müssen die tatsächliche Implementierung der haben JsonProvider. Fügen Sie also javax.jsonAbhängigkeit hinzu. Es hat JsonProvider Implementierungsklasse org.glassfish.json.JsonProviderImpl.class.

<!-- https://mvnrepository.com/artifact/org.glassfish/javax.json -->
<dependency>
    <groupId>org.glassfish</groupId>
    <artifactId>javax.json</artifactId>
    <version>1.1.4</version>
</dependency>

Weitere Details finden Sie hier .

Code_Mode
quelle
3

Ich habe zum Testen Abhängigkeiten von Ihrer pom.xml genommen.

Ich habe meine pom.xml erstellt.

<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.michael</groupId>
    <artifactId>optimizer</artifactId>
    <version>1.0-SNAPSHOT</version>
    <dependencies>
        <dependency>
            <groupId>org.mongodb</groupId>
            <artifactId>mongo-java-driver</artifactId>
            <version>3.4.1</version>
        </dependency>
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-web-api</artifactId>
            <version>7.0</version>
        </dependency>
    </dependencies>
</project>

Ich habe geprüft, ob es die für dieses Problem erforderlichen Gläser enthält.

Ich habe den Befehl maven verwendet : mvn dependency:tree. Mit diesem Befehl können Sie sehen, welche Gläser und abhängigen Gläser verwendet werden.

Geben Sie hier die Bildbeschreibung ein

Diese -> javax.json& javax.json-apiArtefakte fehlen.

Fügen Sie diese Abhängigkeit hinzu pom.xml, um diesen Fehler zu ignorieren:

<!-- This jar provides the interfaces -->
<!-- This may be optional as javaee-web-api contains JsonProvider.class -->
<!-- But still I will recommend to add this explicitly for you to be at safer side -->
<dependency>
    <groupId>javax.json</groupId>
    <artifactId>javax.json-api</artifactId>
    <version>1.0</version> 
</dependency> 
<!-- This jar provides the implementation of this interfaces
<dependency>
    <groupId>org.glassfish</groupId>
    <artifactId>javax.json</artifactId>
    <version>1.1.4</version>
</dependency>

Hinweis: Die javax.json-apiImplementierung erfolgt durch javax.json.

Anish B.
quelle