Error al ejecutar el objetivo org.codehaus.mojo: exec-maven-plugin: 1.5.0: exec

10

Hace tres semanas había terminado de trabajar en una aplicación web. Todo estaba funcionando sin problemas.

Ahora, tres semanas después, sin haber cambiado nada (!!!), quería volver a ejecutar la aplicación, pero esta vez recibí el siguiente mensaje de error:

 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

¿Qué pasa aquí?


El contenido de mi archivo pom.xml es el siguiente:

<?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>
progreso estable
fuente
Entonces, ¿estabas tratando de desplegarte en Glassfish? ¿Qué comando estás ejecutando exactamente? ¿Has reinstalado el servidor?
acm
1
Estoy usando el servidor payara, no el servidor glassfish. Pero estos dos parecen estar estrechamente relacionados.
steady_progress
3
¿Ha verificado que la dependencia org.glassfish: javax.json está presente? Ver stackoverflow.com/questions/47022653/… y stackoverflow.com/questions/33083050/… donde en ambos casos la dependencia que faltaba era el problema ...
blagerweij
1
La dependencia json debe ser proporcionada por el servidor de aplicaciones. Ver por ejemplo: stackoverflow.com/questions/57726562/…
assylias
Actualice su versión de Maven a la última versión 3.6.3 y reconstruya
Ashish Patel

Respuestas:

3

@Anish B .: la dependencia javax.json tiene la clase de implementación JsonProvider como dependencia (como lo señala Code_Mode) ... pero (como lo señalaron las asilias), de hecho, ni siquiera la dependencia javax.json es necesaria como servidor de aplicaciones debería proporcionar esta dependencia.

Miguel
fuente
de hecho, tengo un problema con el servidor (consulte stackoverflow.com/questions/61445520/… ) ... tiene sentido que todo lo proporcione el servidor porque cuando el servidor funcionaba sin problemas (hace 3 semanas), no lo hice no es necesario poner esas dependencias en el archivo pom.xml ... las cosas funcionaron sin eso ... lo que significa que deben haber sido provistas por el servidor de aplicaciones
steady_progress
@Code_Mode: Parece que el archivo pom.xml no necesita ser aumentado en absoluto ... el problema es aparentemente que el servidor no funciona como debería ... así que la solución a esta pregunta: stackoverflow.com/ preguntas / 61445520 / ... también será la respuesta a la pregunta publicada aquí. ... así que quien encuentre una solución para esa otra pregunta recibirá la recompensa de 500 puntos
steady_progress
1
@Anish B .: Parece que el archivo pom.xml no necesita ser aumentado en absoluto ... el problema aparentemente es que el servidor no funciona como debería ... así que la solución a esta pregunta: stackoverflow. com / preguntas / 61445520 / ... también será la respuesta a la pregunta publicada aquí. ... así que quien encuentre una solución para esa otra pregunta recibirá la recompensa de 500 puntos
steady_progress
@steady_progress Ok !! ¿Puedes compartir tu base de código para probar? Descargaré el servidor de aplicaciones payara por mí mismo.
Anish B.
@steady_progress ¿También agrega también la versión del servidor payara? Intentaré resolver el problema.
Anish B.
6

Estás usando javaee-web-apidependencia y tienejavax.json.spi.JsonProvider.class un archivo de clase, no la implementación real.

Necesita tener la implementación real de JsonProvider. Entonces agregue javax.jsondependencia. Tiene JsonProvider clase de implementación 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>

Para más detalles, ver aquí .

Code_Mode
fuente
3

Tomé dependencias de su pom.xml para probar.

Creé mi pom.xml.

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

Verifiqué si contiene los frascos necesarios para este problema.

Solía comando experto: mvn dependency:tree. Con este comando, puede ver qué jarras y jarras dependientes se utilizan.

ingrese la descripción de la imagen aquí

Estos -> javax.jsony javax.json-apiartefactos faltan.

Agregue esta dependencia pom.xmlpara ignorar este error:

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

Nota: la javax.json-apiimplementación se realiza por javax.json.

Anish B.
fuente