Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NPE while executing plugin on unchanged proto files #104

Open
vicmosin opened this issue May 12, 2021 · 4 comments
Open

NPE while executing plugin on unchanged proto files #104

vicmosin opened this issue May 12, 2021 · 4 comments

Comments

@vicmosin
Copy link

  1. mvn clean
  2. mvn generate-sources -> generates initially
  3. mvn generate-sources -> fails with
Caused by: java.lang.NullPointerException: Cannot read the array length because "<local6>" is null
    at com.github.os72.protocjar.Protoc.extractStdTypes (Protoc.java:372)
    at com.github.os72.protocjar.maven.ProtocJarMojo.performProtoCompilation (ProtocJarMojo.java:397)
    at com.github.os72.protocjar.maven.ProtocJarMojo.execute (ProtocJarMojo.java:370)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)

Config to reproduce:

         <plugin>
                <groupId>com.github.os72</groupId>
                <artifactId>protoc-jar-maven-plugin</artifactId>
                <version>3.11.4</version>
                <executions>
                    <execution>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>run</goal>
                        </goals>
                        <configuration>
                            <protocArtifact>com.google.protobuf:protoc:3.12.0</protocArtifact>
                            <includeStdTypes>true</includeStdTypes>
                            <inputDirectories>
                                <include>../proto</include>
                            </inputDirectories>
                            <outputTargets>
                                <outputTarget>
                                    <type>java</type>
                                </outputTarget>
                                <outputTarget>
                                    <type>grpc-java</type>
                                    <pluginArtifact>io.grpc:protoc-gen-grpc-java:${grpc.version}</pluginArtifact>
                                </outputTarget>
                            </outputTargets>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

I assume that happens only when optimizeCodegen=true, setting it to false works (at least as workaround)

@serdaryesilmurat
Copy link

Is there any progress on this issue?

Yes, optimizeCodegen=true seems to be a workaround, but I don't think it should be accepted as a solution.

@os72
Copy link
Owner

os72 commented Dec 5, 2021

Not sure it'll move forward without some support for the project

@Qleoz12
Copy link

Qleoz12 commented Jan 20, 2023

hi, im facing the same error.... some solutions? or where do you put optimizeCodegen=true option?

@commonquail
Copy link

This is #121, #60, #117.

The error manifests because of an interplay between <includeStdTypes>, <protocArtifact>, and <protocVersion>.

  1. <includeStdTypes> triggers a protocol major version lookup
  2. but that lookup only succeeds if <protocVersion> is set and otherwise sets local6=null
  3. but <protocArtifact> usually takes the place of <protocVersion> because of Downloading protoc doesn't respect settings chosen via mvn -s #139 (Fails behind proxy / download mechanism #61).

Fortunately <protocArtifact> supersedes <protocVersion> for protoc resolution so all three settings can be safely specified.

Alternatively, it may be that <includeMavenTypes> can safely and adequately substitute <includeStdTypes> and thereby obviate <protocVersion>. I have not tried this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants