Falha ao executar o objetivo org.codehaus.mojo: exec-maven-plugin: 1.5.0: exec

10

Três semanas atrás, eu terminei o trabalho em um aplicativo da web. Tudo estava correndo sem problemas.

Agora, três semanas depois, sem alterar nada (!!!), eu queria executar o aplicativo novamente, mas desta vez recebi a seguinte mensagem de erro:

 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

O que há de errado aqui?


O conteúdo do meu arquivo pom.xml é o seguinte:

<?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>
stead_progress
fonte
Então, você estava tentando implantar no Glassfish? Que comando você está executando exatamente? Você reinstalou o servidor?
acm 24/04
1
Estou usando o servidor payara, não o servidor glassfish. Mas esses dois parecem estar intimamente relacionados.
stable_progress 25/04
3
Você verificou se a dependência org.glassfish: javax.json está presente? Consulte stackoverflow.com/questions/47022653/… e stackoverflow.com/questions/33083050/… onde, em ambos os casos, a dependência ausente foi o problema ...
blagerweij
1
A dependência do json deve ser fornecida pelo servidor de aplicativos. Veja por exemplo: stackoverflow.com/questions/57726562/…
assylias
Atualize sua versão maven para a mais recente - 3.6.3 e reconstrua
Ashish Patel

Respostas:

3

@Anish B .: a dependência javax.json tem a classe de implementação JsonProvider como dependência (como indicado por Code_Mode) ... mas (como indicado por assylias), na verdade, nem mesmo a dependência de javax.json é necessária como servidor de aplicativos deve fornecer essa dependência.

Michael
fonte
na verdade, tenho um problema com o servidor (consulte stackoverflow.com/questions/61445520/… ) ... faz sentido que tudo deva ser fornecido pelo servidor porque, quando o servidor estava funcionando sem problemas (há 3 semanas), não precisa colocar essas dependências no arquivo pom.xml .... as coisas funcionaram sem isso ... o que significa que elas devem ter sido fornecidas pelo servidor de aplicativos
stable_progress
@Code_Mode: Parece que o arquivo pom.xml não precisa ser aumentado ... o problema aparentemente é que o servidor não está funcionando como deveria ... então a solução para esta pergunta: stackoverflow.com/ questions / 61445520 /… também será a resposta para a pergunta postada aqui. ... então quem encontrar uma solução para essa outra pergunta receberá a recompensa de 500 pontos
stead_progress
1
@Anish B .: Parece que o arquivo pom.xml não precisa ser aumentado ... o problema é que o servidor não está funcionando como deveria ... então a solução para esta pergunta: stackoverflow. com / questions / 61445520 /… também será a resposta para a pergunta postada aqui. ... então quem encontrar uma solução para essa outra pergunta receberá a recompensa de 500 pontos
stead_progress
@steady_progress Ok !! Você pode compartilhar sua base de código para testes? Vou baixar o servidor de aplicativos payara sozinho.
Anish B.
@steady_progress Por favor, adicione também a versão do servidor payara? Vou tentar resolver o problema.
Anish B.
6

Você está usando javaee-web-apidependência e o javax.json.spi.JsonProvider.classarquivo de classe não é a implementação real.

Você precisa ter a implementação real do JsonProvider. Então adicione javax.jsondependência. Possui JsonProvider classe de implementação 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 mais detalhes, clique aqui .

Code_Mode
fonte
3

Peguei dependências do seu pom.xml para testar.

Eu criei meu 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>

Eu verifiquei se ele contém os frascos necessários para este problema.

Eu costumava comando maven: mvn dependency:tree. Usando este comando, você pode ver quais frascos e frascos dependentes são usados.

insira a descrição da imagem aqui

Esses -> javax.json& javax.json-apiartefatos estão ausentes.

Adicione esta dependência pom.xmlpara ignorar este erro:

<!-- 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: a javax.json-apiimplementação é feita por javax.json.

Anish B.
fonte