Uploaded image for project: 'Maven'
  1. Maven
  2. MNG-6932

NullPointerException if no Package is defined for the current class

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Minor
    • Resolution: Unresolved
    • 3.6.3
    • 4.0.x-candidate
    • POM
    • None
    • Windows 10, Java 8, custom classloading

    Description

      When the maven-resolver and related classes are used with a ClassLoader that doesn't define a java.lang.Package object for the loaded classes, the library throws a NullPointerException.

      Scenario: I'm using the maven-resolver classes to resolver artifacts from various repositories. I package the app, and deploy it to a custom environment where the ClassLoader for the app doesn't define a Package for the loaded classes. In these cases, when the maven-resolver library calls this.getClass().getPackage().getImplementationVersion() then a NullPointerException will occurr.

       The following classes are affected:
      DefaultSuperPomProvider.getSuperModel():81
      DefaultReportingConverter.<init>:56

      Code around the locations:

      String modelId = "org.apache.maven:maven-model-builder:"
          + this.getClass().getPackage().getImplementationVersion() + ":super-pom";
      InputSource inputSource = new InputSource();
      inputSource.setModelId( modelId );
      

      This exception makes the library unportable to different environments.

      Workaround:

      Implement a custom variant of the above classes that circumvent these parts of the code.

      Possible solution:

      Null checks, and hard coding the version number.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              sipka Bence Sipka
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

                Created:
                Updated: