GoogleCloudPlatform / cloud-opensource-java

Tools for detecting and avoiding linkage errors in GCP open source projects
Apache License 2.0
155 stars 74 forks source link

Linkage Enforcer rule breaks on "API incompatibility was encountered" #1091

Closed iemejia closed 4 years ago

iemejia commented 4 years ago

While trying to run the linkage-checker-enforcer-rules for Apache HBase I found a weird error:

[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for Apache HBase Third-Party Libs 3.1.2-SNAPSHOT:
[INFO] 
[INFO] Apache HBase Third-Party Libs ...................... SUCCESS [  0.894 s]
[INFO] Apache HBase Patched and Relocated (Shaded) Protobuf SUCCESS [  7.444 s]
[INFO] Apache HBase Relocated (Shaded) Netty Libs ......... FAILURE [  6.005 s]
[INFO] Apache HBase Relocated (Shaded) GSON Libs .......... SKIPPED
[INFO] Apache HBase Relocated (Shaded) Third-party Miscellaneous Libs SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  14.444 s
[INFO] Finished at: 2020-01-08T15:39:17+01:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-enforcer-plugin:3.0.0-M3:enforce (enforce-linkage-checker) on project hbase-shaded-netty: Execution enforce-linkage-checker of goal org.apache.maven.plugins:maven-enforcer-plugin:3.0.0-M3:enforce failed: An API incompatibility was encountered while executing org.apache.maven.plugins:maven-enforcer-plugin:3.0.0-M3:enforce: java.lang.IllegalAccessError: tried to access method org.eclipse.aether.util.ChecksumUtils.toHexString([B)Ljava/lang/String; from class org.eclipse.aether.connector.basic.ChecksumCalculator$Checksum
[ERROR] -----------------------------------------------------
[ERROR] realm =    plugin>org.apache.maven.plugins:maven-enforcer-plugin:3.0.0-M3
[ERROR] strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy
[ERROR] urls[0] = file:/home/ismael/.m2/repository/org/apache/maven/plugins/maven-enforcer-plugin/3.0.0-M3/maven-enforcer-plugin-3.0.0-M3.jar
[ERROR] urls[1] = file:/home/ismael/.m2/repository/org/codehaus/mojo/extra-enforcer-rules/1.2/extra-enforcer-rules-1.2.jar
[ERROR] urls[2] = file:/home/ismael/.m2/repository/org/apache/maven/shared/maven-dependency-tree/2.2/maven-dependency-tree-2.2.jar
[ERROR] urls[3] = file:/home/ismael/.m2/repository/org/eclipse/aether/aether-util/0.9.0.M2/aether-util-0.9.0.M2.jar
[ERROR] urls[4] = file:/home/ismael/.m2/repository/junit/junit/4.11/junit-4.11.jar
[ERROR] urls[5] = file:/home/ismael/.m2/repository/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar
[ERROR] urls[6] = file:/home/ismael/.m2/repository/commons-codec/commons-codec/1.12/commons-codec-1.12.jar
[ERROR] urls[7] = file:/home/ismael/.m2/repository/org/apache/maven/shared/maven-common-artifact-filters/3.1.0/maven-common-artifact-filters-3.1.0.jar
[ERROR] urls[8] = file:/home/ismael/.m2/repository/org/apache/maven/shared/maven-shared-utils/3.1.0/maven-shared-utils-3.1.0.jar
[ERROR] urls[9] = file:/home/ismael/.m2/repository/commons-io/commons-io/2.5/commons-io-2.5.jar
[ERROR] urls[10] = file:/home/ismael/.m2/repository/com/ibm/icu/icu4j/56.1/icu4j-56.1.jar
[ERROR] urls[11] = file:/home/ismael/.m2/repository/com/google/cloud/tools/linkage-checker-enforcer-rules/1.1.0/linkage-checker-enforcer-rules-1.1.0.jar
[ERROR] urls[12] = file:/home/ismael/.m2/repository/com/google/cloud/tools/dependencies/1.1.0/dependencies-1.1.0.jar
[ERROR] urls[13] = file:/home/ismael/.m2/repository/org/apache/bcel/bcel/6.4.0/bcel-6.4.0.jar
[ERROR] urls[14] = file:/home/ismael/.m2/repository/org/apache/maven/resolver/maven-resolver-transport-http/1.4.1/maven-resolver-transport-http-1.4.1.jar
[ERROR] urls[15] = file:/home/ismael/.m2/repository/org/apache/httpcomponents/httpcore/4.4.10/httpcore-4.4.10.jar
[ERROR] urls[16] = file:/home/ismael/.m2/repository/org/apache/maven/resolver/maven-resolver-transport-file/1.4.1/maven-resolver-transport-file-1.4.1.jar
[ERROR] urls[17] = file:/home/ismael/.m2/repository/org/apache/maven/resolver/maven-resolver-connector-basic/1.4.1/maven-resolver-connector-basic-1.4.1.jar
[ERROR] urls[18] = file:/home/ismael/.m2/repository/org/apache/httpcomponents/httpclient/4.5.6/httpclient-4.5.6.jar
[ERROR] urls[19] = file:/home/ismael/.m2/repository/commons-logging/commons-logging/1.2/commons-logging-1.2.jar
[ERROR] urls[20] = file:/home/ismael/.m2/repository/commons-cli/commons-cli/1.4/commons-cli-1.4.jar
[ERROR] urls[21] = file:/home/ismael/.m2/repository/com/google/guava/guava/28.0-jre/guava-28.0-jre.jar
[ERROR] urls[22] = file:/home/ismael/.m2/repository/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar
[ERROR] urls[23] = file:/home/ismael/.m2/repository/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar
[ERROR] urls[24] = file:/home/ismael/.m2/repository/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar
[ERROR] urls[25] = file:/home/ismael/.m2/repository/org/checkerframework/checker-qual/2.8.1/checker-qual-2.8.1.jar
[ERROR] urls[26] = file:/home/ismael/.m2/repository/com/google/errorprone/error_prone_annotations/2.3.2/error_prone_annotations-2.3.2.jar
[ERROR] urls[27] = file:/home/ismael/.m2/repository/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.jar
[ERROR] urls[28] = file:/home/ismael/.m2/repository/org/codehaus/mojo/animal-sniffer-annotations/1.17/animal-sniffer-annotations-1.17.jar
[ERROR] urls[29] = file:/home/ismael/.m2/repository/org/sonatype/sisu/sisu-inject-bean/1.4.2/sisu-inject-bean-1.4.2.jar
[ERROR] urls[30] = file:/home/ismael/.m2/repository/org/sonatype/sisu/sisu-guice/2.1.7/sisu-guice-2.1.7-noaop.jar
[ERROR] urls[31] = file:/home/ismael/.m2/repository/org/sonatype/aether/aether-util/1.7/aether-util-1.7.jar
[ERROR] urls[32] = file:/home/ismael/.m2/repository/org/codehaus/plexus/plexus-interpolation/1.14/plexus-interpolation-1.14.jar
[ERROR] urls[33] = file:/home/ismael/.m2/repository/org/codehaus/plexus/plexus-component-annotations/1.7.1/plexus-component-annotations-1.7.1.jar
[ERROR] urls[34] = file:/home/ismael/.m2/repository/org/sonatype/plexus/plexus-sec-dispatcher/1.3/plexus-sec-dispatcher-1.3.jar
[ERROR] urls[35] = file:/home/ismael/.m2/repository/org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.jar
[ERROR] urls[36] = file:/home/ismael/.m2/repository/org/codehaus/plexus/plexus-utils/3.3.0/plexus-utils-3.3.0.jar
[ERROR] urls[37] = file:/home/ismael/.m2/repository/org/apache/maven/enforcer/enforcer-api/3.0.0-M3/enforcer-api-3.0.0-M3.jar
[ERROR] urls[38] = file:/home/ismael/.m2/repository/org/apache/maven/enforcer/enforcer-rules/3.0.0-M3/enforcer-rules-3.0.0-M3.jar
[ERROR] urls[39] = file:/home/ismael/.m2/repository/org/apache/commons/commons-lang3/3.8.1/commons-lang3-3.8.1.jar
[ERROR] urls[40] = file:/home/ismael/.m2/repository/org/beanshell/bsh/2.0b4/bsh-2.0b4.jar
[ERROR] urls[41] = file:/home/ismael/.m2/repository/org/apache/maven/resolver/maven-resolver-util/1.4.1/maven-resolver-util-1.4.1.jar
[ERROR] Number of foreign imports: 1
[ERROR] import: Entry[import  from realm ClassRealm[maven.api, parent: null]]
[ERROR] 
[ERROR] -----------------------------------------------------
[ERROR] 
[ERROR] -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-enforcer-plugin:3.0.0-M3:enforce (enforce-linkage-checker) on project hbase-shaded-netty: Execution enforce-linkage-checker of goal org.apache.maven.plugins:maven-enforcer-plugin:3.0.0-M3:enforce failed: An API incompatibility was encountered while executing org.apache.maven.plugins:maven-enforcer-plugin:3.0.0-M3:enforce: java.lang.IllegalAccessError: tried to access method org.eclipse.aether.util.ChecksumUtils.toHexString([B)Ljava/lang/String; from class org.eclipse.aether.connector.basic.ChecksumCalculator$Checksum
-----------------------------------------------------
realm =    plugin>org.apache.maven.plugins:maven-enforcer-plugin:3.0.0-M3
strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy
urls[0] = file:/home/ismael/.m2/repository/org/apache/maven/plugins/maven-enforcer-plugin/3.0.0-M3/maven-enforcer-plugin-3.0.0-M3.jar
urls[1] = file:/home/ismael/.m2/repository/org/codehaus/mojo/extra-enforcer-rules/1.2/extra-enforcer-rules-1.2.jar
urls[2] = file:/home/ismael/.m2/repository/org/apache/maven/shared/maven-dependency-tree/2.2/maven-dependency-tree-2.2.jar
urls[3] = file:/home/ismael/.m2/repository/org/eclipse/aether/aether-util/0.9.0.M2/aether-util-0.9.0.M2.jar
urls[4] = file:/home/ismael/.m2/repository/junit/junit/4.11/junit-4.11.jar
urls[5] = file:/home/ismael/.m2/repository/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar
urls[6] = file:/home/ismael/.m2/repository/commons-codec/commons-codec/1.12/commons-codec-1.12.jar
urls[7] = file:/home/ismael/.m2/repository/org/apache/maven/shared/maven-common-artifact-filters/3.1.0/maven-common-artifact-filters-3.1.0.jar
urls[8] = file:/home/ismael/.m2/repository/org/apache/maven/shared/maven-shared-utils/3.1.0/maven-shared-utils-3.1.0.jar
urls[9] = file:/home/ismael/.m2/repository/commons-io/commons-io/2.5/commons-io-2.5.jar
urls[10] = file:/home/ismael/.m2/repository/com/ibm/icu/icu4j/56.1/icu4j-56.1.jar
urls[11] = file:/home/ismael/.m2/repository/com/google/cloud/tools/linkage-checker-enforcer-rules/1.1.0/linkage-checker-enforcer-rules-1.1.0.jar
urls[12] = file:/home/ismael/.m2/repository/com/google/cloud/tools/dependencies/1.1.0/dependencies-1.1.0.jar
urls[13] = file:/home/ismael/.m2/repository/org/apache/bcel/bcel/6.4.0/bcel-6.4.0.jar
urls[14] = file:/home/ismael/.m2/repository/org/apache/maven/resolver/maven-resolver-transport-http/1.4.1/maven-resolver-transport-http-1.4.1.jar
urls[15] = file:/home/ismael/.m2/repository/org/apache/httpcomponents/httpcore/4.4.10/httpcore-4.4.10.jar
urls[16] = file:/home/ismael/.m2/repository/org/apache/maven/resolver/maven-resolver-transport-file/1.4.1/maven-resolver-transport-file-1.4.1.jar
urls[17] = file:/home/ismael/.m2/repository/org/apache/maven/resolver/maven-resolver-connector-basic/1.4.1/maven-resolver-connector-basic-1.4.1.jar
urls[18] = file:/home/ismael/.m2/repository/org/apache/httpcomponents/httpclient/4.5.6/httpclient-4.5.6.jar
urls[19] = file:/home/ismael/.m2/repository/commons-logging/commons-logging/1.2/commons-logging-1.2.jar
urls[20] = file:/home/ismael/.m2/repository/commons-cli/commons-cli/1.4/commons-cli-1.4.jar
urls[21] = file:/home/ismael/.m2/repository/com/google/guava/guava/28.0-jre/guava-28.0-jre.jar
urls[22] = file:/home/ismael/.m2/repository/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar
urls[23] = file:/home/ismael/.m2/repository/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar
urls[24] = file:/home/ismael/.m2/repository/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar
urls[25] = file:/home/ismael/.m2/repository/org/checkerframework/checker-qual/2.8.1/checker-qual-2.8.1.jar
urls[26] = file:/home/ismael/.m2/repository/com/google/errorprone/error_prone_annotations/2.3.2/error_prone_annotations-2.3.2.jar
urls[27] = file:/home/ismael/.m2/repository/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.jar
urls[28] = file:/home/ismael/.m2/repository/org/codehaus/mojo/animal-sniffer-annotations/1.17/animal-sniffer-annotations-1.17.jar
urls[29] = file:/home/ismael/.m2/repository/org/sonatype/sisu/sisu-inject-bean/1.4.2/sisu-inject-bean-1.4.2.jar
urls[30] = file:/home/ismael/.m2/repository/org/sonatype/sisu/sisu-guice/2.1.7/sisu-guice-2.1.7-noaop.jar
urls[31] = file:/home/ismael/.m2/repository/org/sonatype/aether/aether-util/1.7/aether-util-1.7.jar
urls[32] = file:/home/ismael/.m2/repository/org/codehaus/plexus/plexus-interpolation/1.14/plexus-interpolation-1.14.jar
urls[33] = file:/home/ismael/.m2/repository/org/codehaus/plexus/plexus-component-annotations/1.7.1/plexus-component-annotations-1.7.1.jar
urls[34] = file:/home/ismael/.m2/repository/org/sonatype/plexus/plexus-sec-dispatcher/1.3/plexus-sec-dispatcher-1.3.jar
urls[35] = file:/home/ismael/.m2/repository/org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.jar
urls[36] = file:/home/ismael/.m2/repository/org/codehaus/plexus/plexus-utils/3.3.0/plexus-utils-3.3.0.jar
urls[37] = file:/home/ismael/.m2/repository/org/apache/maven/enforcer/enforcer-api/3.0.0-M3/enforcer-api-3.0.0-M3.jar
urls[38] = file:/home/ismael/.m2/repository/org/apache/maven/enforcer/enforcer-rules/3.0.0-M3/enforcer-rules-3.0.0-M3.jar
urls[39] = file:/home/ismael/.m2/repository/org/apache/commons/commons-lang3/3.8.1/commons-lang3-3.8.1.jar
urls[40] = file:/home/ismael/.m2/repository/org/beanshell/bsh/2.0b4/bsh-2.0b4.jar
urls[41] = file:/home/ismael/.m2/repository/org/apache/maven/resolver/maven-resolver-util/1.4.1/maven-resolver-util-1.4.1.jar
Number of foreign imports: 1
import: Entry[import  from realm ClassRealm[maven.api, parent: null]]

-----------------------------------------------------

    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:957)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:193)
    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:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
Caused by: org.apache.maven.plugin.PluginExecutionException: Execution enforce-linkage-checker of goal org.apache.maven.plugins:maven-enforcer-plugin:3.0.0-M3:enforce failed: An API incompatibility was encountered while executing org.apache.maven.plugins:maven-enforcer-plugin:3.0.0-M3:enforce: java.lang.IllegalAccessError: tried to access method org.eclipse.aether.util.ChecksumUtils.toHexString([B)Ljava/lang/String; from class org.eclipse.aether.connector.basic.ChecksumCalculator$Checksum
-----------------------------------------------------
realm =    plugin>org.apache.maven.plugins:maven-enforcer-plugin:3.0.0-M3
strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy
urls[0] = file:/home/ismael/.m2/repository/org/apache/maven/plugins/maven-enforcer-plugin/3.0.0-M3/maven-enforcer-plugin-3.0.0-M3.jar
urls[1] = file:/home/ismael/.m2/repository/org/codehaus/mojo/extra-enforcer-rules/1.2/extra-enforcer-rules-1.2.jar
urls[2] = file:/home/ismael/.m2/repository/org/apache/maven/shared/maven-dependency-tree/2.2/maven-dependency-tree-2.2.jar
urls[3] = file:/home/ismael/.m2/repository/org/eclipse/aether/aether-util/0.9.0.M2/aether-util-0.9.0.M2.jar
urls[4] = file:/home/ismael/.m2/repository/junit/junit/4.11/junit-4.11.jar
urls[5] = file:/home/ismael/.m2/repository/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar
urls[6] = file:/home/ismael/.m2/repository/commons-codec/commons-codec/1.12/commons-codec-1.12.jar
urls[7] = file:/home/ismael/.m2/repository/org/apache/maven/shared/maven-common-artifact-filters/3.1.0/maven-common-artifact-filters-3.1.0.jar
urls[8] = file:/home/ismael/.m2/repository/org/apache/maven/shared/maven-shared-utils/3.1.0/maven-shared-utils-3.1.0.jar
urls[9] = file:/home/ismael/.m2/repository/commons-io/commons-io/2.5/commons-io-2.5.jar
urls[10] = file:/home/ismael/.m2/repository/com/ibm/icu/icu4j/56.1/icu4j-56.1.jar
urls[11] = file:/home/ismael/.m2/repository/com/google/cloud/tools/linkage-checker-enforcer-rules/1.1.0/linkage-checker-enforcer-rules-1.1.0.jar
urls[12] = file:/home/ismael/.m2/repository/com/google/cloud/tools/dependencies/1.1.0/dependencies-1.1.0.jar
urls[13] = file:/home/ismael/.m2/repository/org/apache/bcel/bcel/6.4.0/bcel-6.4.0.jar
urls[14] = file:/home/ismael/.m2/repository/org/apache/maven/resolver/maven-resolver-transport-http/1.4.1/maven-resolver-transport-http-1.4.1.jar
urls[15] = file:/home/ismael/.m2/repository/org/apache/httpcomponents/httpcore/4.4.10/httpcore-4.4.10.jar
urls[16] = file:/home/ismael/.m2/repository/org/apache/maven/resolver/maven-resolver-transport-file/1.4.1/maven-resolver-transport-file-1.4.1.jar
urls[17] = file:/home/ismael/.m2/repository/org/apache/maven/resolver/maven-resolver-connector-basic/1.4.1/maven-resolver-connector-basic-1.4.1.jar
urls[18] = file:/home/ismael/.m2/repository/org/apache/httpcomponents/httpclient/4.5.6/httpclient-4.5.6.jar
urls[19] = file:/home/ismael/.m2/repository/commons-logging/commons-logging/1.2/commons-logging-1.2.jar
urls[20] = file:/home/ismael/.m2/repository/commons-cli/commons-cli/1.4/commons-cli-1.4.jar
urls[21] = file:/home/ismael/.m2/repository/com/google/guava/guava/28.0-jre/guava-28.0-jre.jar
urls[22] = file:/home/ismael/.m2/repository/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar
urls[23] = file:/home/ismael/.m2/repository/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar
urls[24] = file:/home/ismael/.m2/repository/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar
urls[25] = file:/home/ismael/.m2/repository/org/checkerframework/checker-qual/2.8.1/checker-qual-2.8.1.jar
urls[26] = file:/home/ismael/.m2/repository/com/google/errorprone/error_prone_annotations/2.3.2/error_prone_annotations-2.3.2.jar
urls[27] = file:/home/ismael/.m2/repository/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.jar
urls[28] = file:/home/ismael/.m2/repository/org/codehaus/mojo/animal-sniffer-annotations/1.17/animal-sniffer-annotations-1.17.jar
urls[29] = file:/home/ismael/.m2/repository/org/sonatype/sisu/sisu-inject-bean/1.4.2/sisu-inject-bean-1.4.2.jar
urls[30] = file:/home/ismael/.m2/repository/org/sonatype/sisu/sisu-guice/2.1.7/sisu-guice-2.1.7-noaop.jar
urls[31] = file:/home/ismael/.m2/repository/org/sonatype/aether/aether-util/1.7/aether-util-1.7.jar
urls[32] = file:/home/ismael/.m2/repository/org/codehaus/plexus/plexus-interpolation/1.14/plexus-interpolation-1.14.jar
urls[33] = file:/home/ismael/.m2/repository/org/codehaus/plexus/plexus-component-annotations/1.7.1/plexus-component-annotations-1.7.1.jar
urls[34] = file:/home/ismael/.m2/repository/org/sonatype/plexus/plexus-sec-dispatcher/1.3/plexus-sec-dispatcher-1.3.jar
urls[35] = file:/home/ismael/.m2/repository/org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.jar
urls[36] = file:/home/ismael/.m2/repository/org/codehaus/plexus/plexus-utils/3.3.0/plexus-utils-3.3.0.jar
urls[37] = file:/home/ismael/.m2/repository/org/apache/maven/enforcer/enforcer-api/3.0.0-M3/enforcer-api-3.0.0-M3.jar
urls[38] = file:/home/ismael/.m2/repository/org/apache/maven/enforcer/enforcer-rules/3.0.0-M3/enforcer-rules-3.0.0-M3.jar
urls[39] = file:/home/ismael/.m2/repository/org/apache/commons/commons-lang3/3.8.1/commons-lang3-3.8.1.jar
urls[40] = file:/home/ismael/.m2/repository/org/beanshell/bsh/2.0b4/bsh-2.0b4.jar
urls[41] = file:/home/ismael/.m2/repository/org/apache/maven/resolver/maven-resolver-util/1.4.1/maven-resolver-util-1.4.1.jar
Number of foreign imports: 1
import: Entry[import  from realm ClassRealm[maven.api, parent: null]]

-----------------------------------------------------

    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:186)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:957)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:193)
    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:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
Caused by: org.apache.maven.plugin.PluginContainerException: An API incompatibility was encountered while executing org.apache.maven.plugins:maven-enforcer-plugin:3.0.0-M3:enforce: java.lang.IllegalAccessError: tried to access method org.eclipse.aether.util.ChecksumUtils.toHexString([B)Ljava/lang/String; from class org.eclipse.aether.connector.basic.ChecksumCalculator$Checksum
-----------------------------------------------------
realm =    plugin>org.apache.maven.plugins:maven-enforcer-plugin:3.0.0-M3
strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy
urls[0] = file:/home/ismael/.m2/repository/org/apache/maven/plugins/maven-enforcer-plugin/3.0.0-M3/maven-enforcer-plugin-3.0.0-M3.jar
urls[1] = file:/home/ismael/.m2/repository/org/codehaus/mojo/extra-enforcer-rules/1.2/extra-enforcer-rules-1.2.jar
urls[2] = file:/home/ismael/.m2/repository/org/apache/maven/shared/maven-dependency-tree/2.2/maven-dependency-tree-2.2.jar
urls[3] = file:/home/ismael/.m2/repository/org/eclipse/aether/aether-util/0.9.0.M2/aether-util-0.9.0.M2.jar
urls[4] = file:/home/ismael/.m2/repository/junit/junit/4.11/junit-4.11.jar
urls[5] = file:/home/ismael/.m2/repository/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar
urls[6] = file:/home/ismael/.m2/repository/commons-codec/commons-codec/1.12/commons-codec-1.12.jar
urls[7] = file:/home/ismael/.m2/repository/org/apache/maven/shared/maven-common-artifact-filters/3.1.0/maven-common-artifact-filters-3.1.0.jar
urls[8] = file:/home/ismael/.m2/repository/org/apache/maven/shared/maven-shared-utils/3.1.0/maven-shared-utils-3.1.0.jar
urls[9] = file:/home/ismael/.m2/repository/commons-io/commons-io/2.5/commons-io-2.5.jar
urls[10] = file:/home/ismael/.m2/repository/com/ibm/icu/icu4j/56.1/icu4j-56.1.jar
urls[11] = file:/home/ismael/.m2/repository/com/google/cloud/tools/linkage-checker-enforcer-rules/1.1.0/linkage-checker-enforcer-rules-1.1.0.jar
urls[12] = file:/home/ismael/.m2/repository/com/google/cloud/tools/dependencies/1.1.0/dependencies-1.1.0.jar
urls[13] = file:/home/ismael/.m2/repository/org/apache/bcel/bcel/6.4.0/bcel-6.4.0.jar
urls[14] = file:/home/ismael/.m2/repository/org/apache/maven/resolver/maven-resolver-transport-http/1.4.1/maven-resolver-transport-http-1.4.1.jar
urls[15] = file:/home/ismael/.m2/repository/org/apache/httpcomponents/httpcore/4.4.10/httpcore-4.4.10.jar
urls[16] = file:/home/ismael/.m2/repository/org/apache/maven/resolver/maven-resolver-transport-file/1.4.1/maven-resolver-transport-file-1.4.1.jar
urls[17] = file:/home/ismael/.m2/repository/org/apache/maven/resolver/maven-resolver-connector-basic/1.4.1/maven-resolver-connector-basic-1.4.1.jar
urls[18] = file:/home/ismael/.m2/repository/org/apache/httpcomponents/httpclient/4.5.6/httpclient-4.5.6.jar
urls[19] = file:/home/ismael/.m2/repository/commons-logging/commons-logging/1.2/commons-logging-1.2.jar
urls[20] = file:/home/ismael/.m2/repository/commons-cli/commons-cli/1.4/commons-cli-1.4.jar
urls[21] = file:/home/ismael/.m2/repository/com/google/guava/guava/28.0-jre/guava-28.0-jre.jar
urls[22] = file:/home/ismael/.m2/repository/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar
urls[23] = file:/home/ismael/.m2/repository/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar
urls[24] = file:/home/ismael/.m2/repository/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar
urls[25] = file:/home/ismael/.m2/repository/org/checkerframework/checker-qual/2.8.1/checker-qual-2.8.1.jar
urls[26] = file:/home/ismael/.m2/repository/com/google/errorprone/error_prone_annotations/2.3.2/error_prone_annotations-2.3.2.jar
urls[27] = file:/home/ismael/.m2/repository/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.jar
urls[28] = file:/home/ismael/.m2/repository/org/codehaus/mojo/animal-sniffer-annotations/1.17/animal-sniffer-annotations-1.17.jar
urls[29] = file:/home/ismael/.m2/repository/org/sonatype/sisu/sisu-inject-bean/1.4.2/sisu-inject-bean-1.4.2.jar
urls[30] = file:/home/ismael/.m2/repository/org/sonatype/sisu/sisu-guice/2.1.7/sisu-guice-2.1.7-noaop.jar
urls[31] = file:/home/ismael/.m2/repository/org/sonatype/aether/aether-util/1.7/aether-util-1.7.jar
urls[32] = file:/home/ismael/.m2/repository/org/codehaus/plexus/plexus-interpolation/1.14/plexus-interpolation-1.14.jar
urls[33] = file:/home/ismael/.m2/repository/org/codehaus/plexus/plexus-component-annotations/1.7.1/plexus-component-annotations-1.7.1.jar
urls[34] = file:/home/ismael/.m2/repository/org/sonatype/plexus/plexus-sec-dispatcher/1.3/plexus-sec-dispatcher-1.3.jar
urls[35] = file:/home/ismael/.m2/repository/org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.jar
urls[36] = file:/home/ismael/.m2/repository/org/codehaus/plexus/plexus-utils/3.3.0/plexus-utils-3.3.0.jar
urls[37] = file:/home/ismael/.m2/repository/org/apache/maven/enforcer/enforcer-api/3.0.0-M3/enforcer-api-3.0.0-M3.jar
urls[38] = file:/home/ismael/.m2/repository/org/apache/maven/enforcer/enforcer-rules/3.0.0-M3/enforcer-rules-3.0.0-M3.jar
urls[39] = file:/home/ismael/.m2/repository/org/apache/commons/commons-lang3/3.8.1/commons-lang3-3.8.1.jar
urls[40] = file:/home/ismael/.m2/repository/org/beanshell/bsh/2.0b4/bsh-2.0b4.jar
urls[41] = file:/home/ismael/.m2/repository/org/apache/maven/resolver/maven-resolver-util/1.4.1/maven-resolver-util-1.4.1.jar
Number of foreign imports: 1
import: Entry[import  from realm ClassRealm[maven.api, parent: null]]

-----------------------------------------------------

    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:184)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:957)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:193)
    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:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
Caused by: java.lang.IllegalAccessError: tried to access method org.eclipse.aether.util.ChecksumUtils.toHexString([B)Ljava/lang/String; from class org.eclipse.aether.connector.basic.ChecksumCalculator$Checksum
    at org.eclipse.aether.connector.basic.ChecksumCalculator$Checksum.get (ChecksumCalculator.java:100)
    at org.eclipse.aether.connector.basic.ChecksumCalculator.get (ChecksumCalculator.java:213)
    at org.eclipse.aether.connector.basic.TransferTransportListener.getChecksums (TransferTransportListener.java:134)
    at org.eclipse.aether.connector.basic.BasicRepositoryConnector$GetTaskRunner.runTask (BasicRepositoryConnector.java:460)
    at org.eclipse.aether.connector.basic.BasicRepositoryConnector$TaskRunner.run (BasicRepositoryConnector.java:364)
    at org.eclipse.aether.util.concurrency.RunnableErrorForwarder$1.run (RunnableErrorForwarder.java:67)
    at org.eclipse.aether.connector.basic.BasicRepositoryConnector$DirectExecutor.execute (BasicRepositoryConnector.java:644)
    at org.eclipse.aether.connector.basic.BasicRepositoryConnector.get (BasicRepositoryConnector.java:262)
    at org.eclipse.aether.internal.impl.DefaultArtifactResolver.performDownloads (DefaultArtifactResolver.java:499)
    at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve (DefaultArtifactResolver.java:401)
    at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts (DefaultArtifactResolver.java:229)
    at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact (DefaultArtifactResolver.java:207)
    at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom (DefaultArtifactDescriptorReader.java:240)
    at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.readArtifactDescriptor (DefaultArtifactDescriptorReader.java:171)
    at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.resolveCachedArtifactDescriptor (DefaultDependencyCollector.java:541)
    at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.getArtifactDescriptorResult (DefaultDependencyCollector.java:524)
    at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.processDependency (DefaultDependencyCollector.java:412)
    at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.processDependency (DefaultDependencyCollector.java:365)
    at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.process (DefaultDependencyCollector.java:352)
    at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.doRecurse (DefaultDependencyCollector.java:509)
    at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.processDependency (DefaultDependencyCollector.java:461)
    at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.processDependency (DefaultDependencyCollector.java:365)
    at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.process (DefaultDependencyCollector.java:352)
    at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.doRecurse (DefaultDependencyCollector.java:509)
    at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.processDependency (DefaultDependencyCollector.java:461)
    at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.processDependency (DefaultDependencyCollector.java:365)
    at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.process (DefaultDependencyCollector.java:352)
    at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.doRecurse (DefaultDependencyCollector.java:509)
    at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.processDependency (DefaultDependencyCollector.java:461)
    at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.processDependency (DefaultDependencyCollector.java:365)
    at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.process (DefaultDependencyCollector.java:352)
    at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.collectDependencies (DefaultDependencyCollector.java:254)
    at org.eclipse.aether.internal.impl.DefaultRepositorySystem.collectDependencies (DefaultRepositorySystem.java:284)
    at org.apache.maven.project.DefaultProjectDependenciesResolver.resolve (DefaultProjectDependenciesResolver.java:169)
    at com.google.cloud.tools.dependencies.enforcer.LinkageCheckerRule.findProjectClasspath (LinkageCheckerRule.java:261)
    at com.google.cloud.tools.dependencies.enforcer.LinkageCheckerRule.execute (LinkageCheckerRule.java:169)
    at org.apache.maven.plugins.enforcer.EnforceMojo.execute (EnforceMojo.java:205)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:957)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:193)
    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:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
[ERROR] 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginContainerException
[ERROR] 
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR]   mvn <args> -rf :hbase-shaded-netty

I am using Maven 3.6.1 and the recommended versions of the enforcer-rules and linkage rule. Current config: https://github.com/iemejia/hbase-thirdparty/blob/4bb72d454ef148544ab5798d770f587198607dfa/pom.xml#L237

You can reproduce by cloning this repo's https://github.com/iemejia/hbase-thirdparty and running mvn clean verify

suztomo commented 4 years ago

@iemejia Thank you for the report and repository. I confirmed that I can reproduce the issue in my computer. Will check the root cause.

Note for myself:

suztomo commented 4 years ago

It was aether-util:0.9.0.M2 (from extra-enforcer-rules) that has org.eclipse.aether.util.ChecksumUtils with private toHexString(byte[]) method image

Excluding the artifact worked fine for my environment. Would you try:

suztomo@suxtomo24:~/hbase-thirdparty$ git diff
diff --git a/pom.xml b/pom.xml
index f4668c5..077262e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -243,6 +243,12 @@
             <groupId>org.codehaus.mojo</groupId>
             <artifactId>extra-enforcer-rules</artifactId>
             <version>1.2</version>
+            <exclusions>
+              <exclusion>
+                <groupId>org.eclipse.aether</groupId>
+                <artifactId>aether-util</artifactId>
+              </exclusion>
+            </exclusions>
           </dependency>
           <dependency>
             <groupId>com.google.cloud.tools</groupId>
elharo commented 4 years ago

What's the full path to that dependency? It should be easy enough to fix the root cause.

suztomo commented 4 years ago
[INFO] org.codehaus.mojo:extra-enforcer-rules:jar:1.3-SNAPSHOT
[INFO] +- org.apache.maven.shared:maven-dependency-tree:jar:2.1:compile
[INFO] |  \- org.eclipse.aether:aether-util:jar:0.9.0.M2:compile

org.apache.maven.shared:maven-dependency-tree:3.0.1 (latest) still uses aether-util:0.9.0.M2 . I will file a PR on the repository.

iemejia commented 4 years ago

Silly me, I forgot to check that the other dependency could be leaking the wrong class. Thanks a lot for the solution @suztomo. Closing the issue now since this is not an issue of this project. And btw. Thanks also for moving this up in MSHARED, awesome!