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

Linkage Enforcer rule breaks on missing TypeToken class #1092

Closed
iemejia opened this issue Jan 8, 2020 · 11 comments · Fixed by #1094
Closed

Linkage Enforcer rule breaks on missing TypeToken class #1092

iemejia opened this issue Jan 8, 2020 · 11 comments · Fixed by #1094

Comments

@iemejia
Copy link

iemejia commented Jan 8, 2020

While trying to execute linkage-enforcer plugin on HBase I found this message

Execution enforce-linkage-checker of goal org.apache.maven.plugins:maven-enforcer-plugin:3.0.0-M3:enforce failed: The source class in the reference is no longer available in the class path: Exception while looking for class com.google.common.reflect.TypeToken: java.io.IOException: Couldn't find: com/google/common/reflect/TypeToken.class

Full log:

[INFO] --- maven-enforcer-plugin:3.0.0-M3:enforce (enforce-linkage-checker) @ hbase-common ---
[DEBUG] Configuring mojo org.apache.maven.plugins:maven-enforcer-plugin:3.0.0-M3:enforce from plugin realm ClassRealm[plugin>org.apache.maven.plugins:maven-enforcer-plugin:3.0.0-M3, parent: sun.misc.Launcher$AppClassLoader@1b6d3586]
[DEBUG] Configuring mojo 'org.apache.maven.plugins:maven-enforcer-plugin:3.0.0-M3:enforce' with basic configurator -->
[DEBUG]   (f) commandLineRules = []
[DEBUG]   (s) fail = true
[DEBUG]   (s) failFast = false
[DEBUG]   (f) ignoreCache = false
[DEBUG]   (f) mojoExecution = org.apache.maven.plugins:maven-enforcer-plugin:3.0.0-M3:enforce {execution: enforce-linkage-checker}
[DEBUG]   (s) project = MavenProject: org.apache.hbase:hbase-common:3.0.0-SNAPSHOT @ /home/ismael/upstream/hbase/hbase-common/pom.xml
[DEBUG]   (s) level = WARN
[DEBUG]   (s) rules = [com.google.cloud.tools.dependencies.enforcer.LinkageCheckerRule@5375c3c0]
[DEBUG]   (s) session = org.apache.maven.execution.MavenSession@dcc6211
[DEBUG]   (s) skip = false
[DEBUG] -- end configuration --
[DEBUG] Executing rule: com.google.cloud.tools.dependencies.enforcer.LinkageCheckerRule
[DEBUG] Could not find metadata org.bouncycastle:bcpkix-jdk15on/maven-metadata.xml in local (/home/ismael/.m2/repository)
[DEBUG] Failure to find org.bouncycastle:bcpkix-jdk15on/maven-metadata.xml in https://repository.apache.org/snapshots was cached in the local repository, resolution will not be reattempted until the update interval of apache.snapshots has elapsed or updates are forced
[DEBUG] Skipped remote request for org.bouncycastle:bcpkix-jdk15on/maven-metadata.xml, locally cached metadata up-to-date.
[DEBUG] Failure to find org.bouncycastle:bcpkix-jdk15on/maven-metadata.xml in https://repository.apache.org/content/repositories/snapshots was cached in the local repository, resolution will not be reattempted until the update interval of apache.snapshots.https has elapsed or updates are forced
[DEBUG] Failure to find org.bouncycastle:bcpkix-jdk15on/maven-metadata.xml in http://repository.jboss.org/nexus/content/groups/public/ was cached in the local repository, resolution will not be reattempted until the update interval of repository.jboss.org has elapsed or updates are forced
[DEBUG] Dependency collection stats: {ConflictMarker.analyzeTime=246681, ConflictMarker.markTime=147317, ConflictMarker.nodeCount=569, ConflictIdSorter.graphTime=113760, ConflictIdSorter.topsortTime=94968, ConflictIdSorter.conflictIdCount=155, ConflictIdSorter.conflictIdCycleCount=0, ConflictResolver.totalTime=4475469, ConflictResolver.conflictItemCount=323, DefaultDependencyCollector.collectTime=159983349, DefaultDependencyCollector.transformTime=5116583}
[DEBUG] org.apache.hbase:hbase-common:jar:3.0.0-SNAPSHOT
[DEBUG]    org.apache.hbase.thirdparty:hbase-shaded-miscellaneous:jar:3.1.1:compile
[DEBUG]       com.google.errorprone:error_prone_annotations:jar:2.3.3:compile
[DEBUG]    org.apache.hbase.thirdparty:hbase-shaded-gson:jar:3.1.1:compile
[DEBUG]    org.apache.hbase.thirdparty:hbase-shaded-netty:jar:3.1.1:compile
[DEBUG]    org.slf4j:slf4j-api:jar:1.7.25:compile
[DEBUG]    commons-codec:commons-codec:jar:1.10:compile
[DEBUG]    org.apache.commons:commons-lang3:jar:3.9:compile
[DEBUG]    commons-io:commons-io:jar:2.5:compile
[DEBUG]    commons-validator:commons-validator:jar:1.6:compile
[DEBUG]       commons-beanutils:commons-beanutils:jar:1.9.2:compile
[DEBUG]       commons-digester:commons-digester:jar:1.8.1:compile
[DEBUG]          xml-apis:xml-apis:jar:1.0.b2:compile
[DEBUG]       commons-logging:commons-logging:jar:1.2:compile (version managed from 1.2)
[DEBUG]          logkit:logkit:jar:1.0.1:compile (optional)
[DEBUG]          avalon-framework:avalon-framework:jar:4.1.5:compile (optional)
[DEBUG]          javax.servlet:servlet-api:jar:2.3:provided (optional)
[DEBUG]       commons-collections:commons-collections:jar:3.2.2:compile
[DEBUG]    com.google.protobuf:protobuf-java:jar:2.5.0:compile
[DEBUG]    org.apache.htrace:htrace-core4:jar:4.2.0-incubating:compile
[DEBUG]    org.apache.commons:commons-crypto:jar:1.0.0:compile (exclusions managed from [net.java.dev.jna:jna:*:*])
[DEBUG]    com.github.stephenc.findbugs:findbugs-annotations:jar:1.3.9-1:compile
[DEBUG]       com.google.code.findbugs:jsr305:jar:1.3.9:compile (optional)
[DEBUG]    log4j:log4j:jar:1.2.17:compile
[DEBUG]       javax.mail:mail:jar:1.4.3:compile
[DEBUG]          javax.activation:activation:jar:1.1:compile
[DEBUG]       org.apache.openejb:javaee-api:jar:5.0-2:provided
[DEBUG]       org.apache.geronimo.specs:geronimo-jms_1.1_spec:jar:1.0:compile (optional)
[DEBUG]    org.apache.hadoop:hadoop-common:jar:2.8.5:compile (exclusions managed from [com.sun.jersey:jersey-core:*:*, org.codehaus.jackson:jackson-jaxrs:*:*, org.codehaus.jackson:jackson-xc:*:*, commons-beanutils:commons-beanutils:*:*, javax.servlet.jsp:jsp-api:*:*, javax.servlet:servlet-api:*:*, stax:stax-api:*:*, io.netty:netty:*:*, com.google.code.findbugs:jsr305:*:*, junit:junit:*:*, org.codehaus.jackson:jackson-core-asl:*:*, org.codehaus.jackson:jackson-mapper-asl:*:*])
[DEBUG]       org.apache.hadoop:hadoop-annotations:jar:2.8.5:compile (version managed from 2.8.5)
[DEBUG]          jdiff:jdiff:jar:1.0.9:compile
[DEBUG]       com.google.guava:guava:jar:11.0.2:compile
[DEBUG]          com.google.guava:guava-bootstrap:jar:11.0.2:provided
[DEBUG]       commons-cli:commons-cli:jar:1.2:compile
[DEBUG]       org.apache.commons:commons-math3:jar:3.6.1:compile (version managed from 3.1.1)
[DEBUG]       xmlenc:xmlenc:jar:0.52:compile
[DEBUG]       org.apache.httpcomponents:httpclient:jar:4.5.3:compile (version managed from 4.5.2)
[DEBUG]          org.apache.httpcomponents:httpcore:jar:4.4.6:compile (version managed from 4.4.6)
[DEBUG]       commons-net:commons-net:jar:3.1:compile
[DEBUG]       org.mortbay.jetty:jetty:jar:6.1.26:compile
[DEBUG]       org.mortbay.jetty:jetty-util:jar:6.1.26:compile
[DEBUG]          org.mortbay.jetty:servlet-api:jar:2.5-20081211:provided
[DEBUG]       org.mortbay.jetty:jetty-sslengine:jar:6.1.26:compile
[DEBUG]       com.sun.jersey:jersey-json:jar:1.9:compile
[DEBUG]          org.codehaus.jettison:jettison:jar:1.3.8:compile (version managed from 1.1)
[DEBUG]          com.sun.xml.bind:jaxb-impl:jar:2.2.3-1:compile
[DEBUG]       com.sun.jersey:jersey-server:jar:1.9:compile
[DEBUG]          asm:asm:jar:3.1:compile
[DEBUG]          javax.persistence:persistence-api:jar:1.0:provided
[DEBUG]          javax.xml.bind:jaxb-api:jar:2.2.12:compile (version managed from 2.1) (exclusions managed from [])
[DEBUG]          javax.servlet:javax.servlet-api:jar:3.1.0:provided (version managed from 3.0.1)
[DEBUG]          javax.servlet:jsp-api:jar:2.0:provided
[DEBUG]          org.glassfish:javax.ejb:jar:3.1:provided
[DEBUG]             org.glassfish:javax.transaction:jar:3.1:provided
[DEBUG]             org.glassfish:javax.annotation:jar:3.1:provided
[DEBUG]             org.glassfish:javax.xml.rpc:jar:3.1:provided (optional)
[DEBUG]                javax.xml:jaxrpc-api:jar:1.1:provided (optional)
[DEBUG]          org.jboss.weld:weld-osgi-bundle:jar:1.1.0.Final:provided
[DEBUG]             javax.enterprise:cdi-api:jar:1.0-SP4:provided
[DEBUG]                javax.el:el-api:jar:2.2:provided (optional)
[DEBUG]                org.jboss.spec.javax.ejb:jboss-ejb-api_3.1_spec:jar:1.0.0.CR2:provided (optional)
[DEBUG]                org.jboss.spec.javax.interceptor:jboss-interceptors-api_1.1_spec:jar:1.0.0.Beta1:provided
[DEBUG]                javax.annotation:jsr250-api:jar:1.0:provided
[DEBUG]             org.jboss.weld:weld-api:jar:1.1.Final:provided
[DEBUG]             org.jboss.weld:weld-core:jar:1.1.0.Final:provided
[DEBUG]                javax.transaction:jta:jar:1.1:provided (optional)
[DEBUG]                javax.validation:validation-api:jar:1.0.0.GA:provided (optional)
[DEBUG]                javax.faces:jsf-api:jar:2.0:provided (optional)
[DEBUG]                   jstl:jstl:jar:1.2:provided (optional)
[DEBUG]                org.slf4j:slf4j-ext:jar:1.5.10:provided
[DEBUG]                ch.qos.cal10n:cal10n-api:jar:0.7.2:provided
[DEBUG]                net.sourceforge.findbugs:annotations:jar:1.3.2:provided (optional)
[DEBUG]             org.jboss.weld:weld-spi:jar:1.1.Final:provided
[DEBUG]             org.javassist:javassist:jar:3.14.0-GA:provided
[DEBUG]             javax.inject:javax.inject:jar:1:compile
[DEBUG]             org.jboss.interceptor:jboss-interceptor-spi:jar:2.0.0.CR1:provided
[DEBUG]             org.jboss.interceptor:jboss-interceptor-core:jar:2.0.0.CR1:provided
[DEBUG]                javassist:javassist:jar:3.12.0.GA:provided
[DEBUG]             org.slf4j:slf4j-jdk14:jar:1.5.10:provided
[DEBUG]          ant:ant:jar:1.6.5:compile
[DEBUG]          org.osgi:osgi_R4_core:jar:1.0:provided
[DEBUG]       net.java.dev.jets3t:jets3t:jar:0.9.0:compile
[DEBUG]          com.jamesmurty.utils:java-xmlbuilder:jar:0.4:compile
[DEBUG]       commons-lang:commons-lang:jar:2.6:compile
[DEBUG]       commons-configuration:commons-configuration:jar:1.6:compile
[DEBUG]          commons-beanutils:commons-beanutils-core:jar:1.8.0:compile
[DEBUG]          commons-jxpath:commons-jxpath:jar:1.3:compile (optional)
[DEBUG]             jdom:jdom:jar:1.0:compile (optional)
[DEBUG]                jaxen:jaxen:jar:1.0-FCS:compile (optional)
[DEBUG]                saxpath:saxpath:jar:1.0-FCS:compile (optional)
[DEBUG]          xerces:xercesImpl:jar:2.3.0:compile
[DEBUG]          xalan:xalan:jar:2.7.0:compile
[DEBUG]       org.slf4j:slf4j-log4j12:jar:1.7.25:compile (version managed from 1.7.10)
[DEBUG]       org.apache.avro:avro:jar:1.7.7:compile (version managed from 1.7.4)
[DEBUG]          com.thoughtworks.paranamer:paranamer:jar:2.3:compile
[DEBUG]          org.xerial.snappy:snappy-java:jar:1.0.5:compile
[DEBUG]             org.osgi:core:jar:4.3.0:provided
[DEBUG]          org.slf4j:slf4j-simple:jar:1.6.4:runtime (optional)
[DEBUG]       org.apache.ant:ant:jar:1.8.1:compile
[DEBUG]          org.apache.ant:ant-launcher:jar:1.8.1:compile
[DEBUG]       com.google.code.gson:gson:jar:2.2.4:compile
[DEBUG]       org.apache.hadoop:hadoop-auth:jar:2.8.5:compile (version managed from 2.8.5) (exclusions managed from [])
[DEBUG]          com.nimbusds:nimbus-jose-jwt:jar:4.41.1:compile
[DEBUG]             com.github.stephenc.jcip:jcip-annotations:jar:1.0-1:compile
[DEBUG]             org.bouncycastle:bcpkix-jdk15on:jar:1.64:compile (optional)
[DEBUG]          org.apache.directory.server:apacheds-kerberos-codec:jar:2.0.0-M15:compile
[DEBUG]             org.apache.directory.server:apacheds-i18n:jar:2.0.0-M15:compile
[DEBUG]             org.apache.directory.api:api-asn1-api:jar:1.0.0-M20:compile
[DEBUG]             org.apache.directory.api:api-util:jar:1.0.0-M20:compile
[DEBUG]             findbugs:annotations:jar:1.0.0:provided
[DEBUG]          org.apache.curator:curator-framework:jar:4.2.0:compile (version managed from 2.7.1) (exclusions managed from [])
[DEBUG]             com.fasterxml.jackson.core:jackson-core:jar:2.9.10:provided (version managed from 2.9.8)
[DEBUG]             com.fasterxml.jackson.core:jackson-databind:jar:2.9.10.1:provided (version managed from 2.9.8)
[DEBUG]                com.fasterxml.jackson.core:jackson-annotations:jar:2.9.10:provided (version managed from 2.9.10)
[DEBUG]       com.jcraft:jsch:jar:0.1.54:compile
[DEBUG]          com.jcraft:jzlib:jar:1.0.7:compile (optional)
[DEBUG]       org.apache.curator:curator-client:jar:4.2.0:compile (version managed from 2.7.1) (exclusions managed from [])
[DEBUG]       org.apache.curator:curator-recipes:jar:4.2.0:compile (version managed from 2.7.1) (exclusions managed from [])
[DEBUG]       org.apache.zookeeper:zookeeper:jar:3.4.10:compile (version managed from 3.4.6) (exclusions managed from [jline:jline:*:*, org.jboss.netty:netty:*:*, junit:junit:*:*, com.sun.jdmk:jmxtools:*:*, com.sun.jmx:jmxri:*:*])
[DEBUG]          org.apache.maven.wagon:wagon-http:jar:2.4:compile (optional)
[DEBUG]             org.apache.maven.wagon:wagon-http-shared4:jar:2.4:compile (optional)
[DEBUG]                org.jsoup:jsoup:jar:1.7.1:compile (optional)
[DEBUG]             org.apache.maven.wagon:wagon-provider-api:jar:2.4:compile (optional)
[DEBUG]          org.apache.maven:maven-ant-tasks:jar:2.1.3:compile (optional)
[DEBUG]             classworlds:classworlds:jar:1.1-alpha-2:compile (optional)
[DEBUG]             org.codehaus.plexus:plexus-container-default:jar:1.0-alpha-9-stable-1:compile (optional)
[DEBUG]             org.codehaus.plexus:plexus-utils:jar:1.5.15:compile (optional)
[DEBUG]             org.codehaus.plexus:plexus-interpolation:jar:1.11:compile (optional)
[DEBUG]             org.apache.maven:maven-artifact:jar:2.2.1:compile (optional)
[DEBUG]             org.apache.maven:maven-artifact-manager:jar:2.2.1:compile (optional)
[DEBUG]                org.apache.maven:maven-repository-metadata:jar:2.2.1:compile (optional)
[DEBUG]                backport-util-concurrent:backport-util-concurrent:jar:3.1:compile (optional)
[DEBUG]             org.apache.maven:maven-model:jar:2.2.1:compile (optional)
[DEBUG]             org.apache.maven:maven-project:jar:2.2.1:compile (optional)
[DEBUG]                org.apache.maven:maven-profile:jar:2.2.1:compile (optional)
[DEBUG]                org.apache.maven:maven-plugin-registry:jar:2.2.1:compile (optional)
[DEBUG]             org.apache.maven:maven-error-diagnostics:jar:2.2.1:compile (optional)
[DEBUG]             org.apache.maven:maven-settings:jar:2.2.1:compile (optional)
[DEBUG]             org.apache.maven.wagon:wagon-file:jar:1.0-beta-6:compile (optional)
[DEBUG]             org.apache.maven.wagon:wagon-http-lightweight:jar:1.0-beta-6:compile (optional)
[DEBUG]                org.apache.maven.wagon:wagon-http-shared:jar:1.0-beta-6:compile (optional)
[DEBUG]                   nekohtml:xercesMinimal:jar:1.9.6.2:compile (optional)
[DEBUG]                   nekohtml:nekohtml:jar:1.9.6.2:compile (optional)
[DEBUG]          org.vafer:jdeb:jar:0.8:compile (optional)
[DEBUG]             org.apache.maven:maven-plugin-api:jar:2.1.0:compile (optional)
[DEBUG]             org.bouncycastle:bcpg-jdk12:jar:130:compile (optional)
[DEBUG]                org.bouncycastle:bcprov-jdk12:jar:130:compile (optional)
[DEBUG]          xerces:xerces:jar:1.4.4:compile (optional)
[DEBUG]          org.apache.rat:apache-rat-tasks:jar:0.6:compile (optional)
[DEBUG]             org.apache.rat:apache-rat-core:jar:0.6:compile (optional)
[DEBUG]       org.apache.commons:commons-compress:jar:1.4.1:compile
[DEBUG]          org.tukaani:xz:jar:1.0:compile
[DEBUG]    org.apache.yetus:audience-annotations:jar:0.5.0:compile
[DEBUG]       jdk.tools:jdk.tools:jar:1.8:system
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for Apache HBase - Common 3.0.0-SNAPSHOT:
[INFO] 
[INFO] Apache HBase - Common .............................. FAILURE [ 18.165 s]
[INFO] Apache HBase - Metrics API ......................... SKIPPED
[INFO] Apache HBase - Hadoop Compatibility ................ SKIPPED
[INFO] Apache HBase - Metrics Implementation .............. SKIPPED
[INFO] Apache HBase - Hadoop Two Compatibility ............ SKIPPED
[INFO] Apache HBase - Protocol ............................ SKIPPED
[INFO] Apache HBase - Client .............................. SKIPPED
[INFO] Apache HBase - Zookeeper ........................... SKIPPED
[INFO] Apache HBase - Replication ......................... SKIPPED
[INFO] Apache HBase - Resource Bundle ..................... SKIPPED
[INFO] Apache HBase - HTTP ................................ SKIPPED
[INFO] Apache HBase - Procedure ........................... SKIPPED
[INFO] Apache HBase - Server .............................. SKIPPED
[INFO] Apache HBase - MapReduce ........................... SKIPPED
[INFO] Apache HBase - Testing Util ........................ SKIPPED
[INFO] Apache HBase - Thrift .............................. SKIPPED
[INFO] Apache HBase - RSGroup ............................. SKIPPED
[INFO] Apache HBase - Shell ............................... SKIPPED
[INFO] Apache HBase - Coprocessor Endpoint ................ SKIPPED
[INFO] Apache HBase - Backup .............................. SKIPPED
[INFO] Apache HBase - Integration Tests ................... SKIPPED
[INFO] Apache HBase - Rest ................................ SKIPPED
[INFO] Apache HBase - Examples ............................ SKIPPED
[INFO] Apache HBase - Shaded .............................. SKIPPED
[INFO] Apache HBase - Shaded - Client (with Hadoop bundled) SKIPPED
[INFO] Apache HBase - Shaded - Client ..................... SKIPPED
[INFO] Apache HBase - Shaded - MapReduce .................. SKIPPED
[INFO] Apache HBase - External Block Cache ................ SKIPPED
[INFO] Apache HBase - HBTop ............................... SKIPPED
[INFO] Apache HBase - Assembly ............................ SKIPPED
[INFO] Apache HBase - Shaded - Testing Util ............... SKIPPED
[INFO] Apache HBase - Shaded - Testing Util Tester ........ SKIPPED
[INFO] Apache HBase Shaded Packaging Invariants ........... SKIPPED
[INFO] Apache HBase Shaded Packaging Invariants (with Hadoop bundled) SKIPPED
[INFO] Apache HBase - Archetypes .......................... SKIPPED
[INFO] Apache HBase - Exemplar for hbase-client archetype . SKIPPED
[INFO] Apache HBase - Exemplar for hbase-shaded-client archetype SKIPPED
[INFO] Apache HBase - Archetype builder ................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  18.869 s
[INFO] Finished at: 2020-01-08T22:49:31+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-common: Execution enforce-linkage-checker of goal org.apache.maven.plugins:maven-enforcer-plugin:3.0.0-M3:enforce failed: The source class in the reference is no longer available in the class path: Exception while looking for class com.google.common.reflect.TypeToken: java.io.IOException: Couldn't find: com/google/common/reflect/TypeToken.class -> [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-common: Execution enforce-linkage-checker of goal org.apache.maven.plugins:maven-enforcer-plugin:3.0.0-M3:enforce failed: The source class in the reference is no longer available in the class path
    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: The source class in the reference is no longer available in the class path
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:148)
    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.bcel.classfile.ClassFormatException: The source class in the reference is no longer available in the class path
    at com.google.cloud.tools.opensource.classpath.ClassDumper.catchesLinkageError (ClassDumper.java:544)
    at com.google.cloud.tools.opensource.classpath.ClassDumper.catchesLinkageError (ClassDumper.java:536)
    at com.google.cloud.tools.opensource.classpath.LinkageChecker.findSymbolProblem (LinkageChecker.java:485)
    at com.google.cloud.tools.opensource.classpath.LinkageChecker.lambda$findSymbolProblems$1 (LinkageChecker.java:161)
    at com.google.common.collect.ImmutableMultimap.lambda$null$2 (ImmutableMultimap.java:604)
    at java.lang.Iterable.forEach (Iterable.java:75)
    at com.google.common.collect.ImmutableMultimap.lambda$forEach$3 (ImmutableMultimap.java:604)
    at com.google.common.collect.RegularImmutableMap.forEach (RegularImmutableMap.java:186)
    at com.google.common.collect.ImmutableMultimap.forEach (ImmutableMultimap.java:603)
    at com.google.cloud.tools.opensource.classpath.LinkageChecker.findSymbolProblems (LinkageChecker.java:131)
    at com.google.cloud.tools.dependencies.enforcer.LinkageCheckerRule.execute (LinkageCheckerRule.java:189)
    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)
Caused by: java.lang.ClassNotFoundException: Exception while looking for class com.google.common.reflect.TypeToken: java.io.IOException: Couldn't find: com/google/common/reflect/TypeToken.class
    at org.apache.bcel.util.AbstractClassPathRepository.loadClass (AbstractClassPathRepository.java:77)
    at org.apache.bcel.util.ClassPathRepository.loadClass (ClassPathRepository.java:31)
    at com.google.cloud.tools.opensource.classpath.FixedSizeClassPathRepository.loadClass (FixedSizeClassPathRepository.java:108)
    at com.google.cloud.tools.opensource.classpath.ClassDumper.loadJavaClass (ClassDumper.java:116)
    at com.google.cloud.tools.opensource.classpath.ClassDumper.catchesLinkageError (ClassDumper.java:515)
    at com.google.cloud.tools.opensource.classpath.ClassDumper.catchesLinkageError (ClassDumper.java:536)
    at com.google.cloud.tools.opensource.classpath.LinkageChecker.findSymbolProblem (LinkageChecker.java:485)
    at com.google.cloud.tools.opensource.classpath.LinkageChecker.lambda$findSymbolProblems$1 (LinkageChecker.java:161)
    at com.google.common.collect.ImmutableMultimap.lambda$null$2 (ImmutableMultimap.java:604)
    at java.lang.Iterable.forEach (Iterable.java:75)
    at com.google.common.collect.ImmutableMultimap.lambda$forEach$3 (ImmutableMultimap.java:604)
    at com.google.common.collect.RegularImmutableMap.forEach (RegularImmutableMap.java:186)
    at com.google.common.collect.ImmutableMultimap.forEach (ImmutableMultimap.java:603)
    at com.google.cloud.tools.opensource.classpath.LinkageChecker.findSymbolProblems (LinkageChecker.java:131)
    at com.google.cloud.tools.dependencies.enforcer.LinkageCheckerRule.execute (LinkageCheckerRule.java:189)
    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)
Caused by: java.io.IOException: Couldn't find: com/google/common/reflect/TypeToken.class
    at org.apache.bcel.util.ClassPath.getClassFile (ClassPath.java:666)
    at com.google.cloud.tools.opensource.classpath.LinkageCheckClassPath.getInputStream (LinkageCheckClassPath.java:72)
    at org.apache.bcel.util.ClassPath.getInputStream (ClassPath.java:688)
    at org.apache.bcel.util.AbstractClassPathRepository.loadClass (AbstractClassPathRepository.java:75)
    at org.apache.bcel.util.ClassPathRepository.loadClass (ClassPathRepository.java:31)
    at com.google.cloud.tools.opensource.classpath.FixedSizeClassPathRepository.loadClass (FixedSizeClassPathRepository.java:108)
    at com.google.cloud.tools.opensource.classpath.ClassDumper.loadJavaClass (ClassDumper.java:116)
    at com.google.cloud.tools.opensource.classpath.ClassDumper.catchesLinkageError (ClassDumper.java:515)
    at com.google.cloud.tools.opensource.classpath.ClassDumper.catchesLinkageError (ClassDumper.java:536)
    at com.google.cloud.tools.opensource.classpath.LinkageChecker.findSymbolProblem (LinkageChecker.java:485)
    at com.google.cloud.tools.opensource.classpath.LinkageChecker.lambda$findSymbolProblems$1 (LinkageChecker.java:161)
    at com.google.common.collect.ImmutableMultimap.lambda$null$2 (ImmutableMultimap.java:604)
    at java.lang.Iterable.forEach (Iterable.java:75)
    at com.google.common.collect.ImmutableMultimap.lambda$forEach$3 (ImmutableMultimap.java:604)
    at com.google.common.collect.RegularImmutableMap.forEach (RegularImmutableMap.java:186)
    at com.google.common.collect.ImmutableMultimap.forEach (ImmutableMultimap.java:603)
    at com.google.cloud.tools.opensource.classpath.LinkageChecker.findSymbolProblems (LinkageChecker.java:131)
    at com.google.cloud.tools.dependencies.enforcer.LinkageCheckerRule.execute (LinkageCheckerRule.java:189)
    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/PluginExecutionException

You can reproduce it by running mvn clean verify -DskipTests on this repo https://github.com/iemejia/hbase

@suztomo
Copy link
Contributor

suztomo commented Jan 8, 2020

Thank you for reporting this and instruction on how to reproduce this. I confirmed I can reproduce the error. I will get back to this this week (hopefully tomorrow).

@suztomo
Copy link
Contributor

suztomo commented Jan 9, 2020

Diagnosis

Linkage Checker has a (wrong) assumption that the outer class of an inner class always exists in a class path. In this case, org.apache.curator:curator-client:4.2.0, one of the dependency of HBase, has shaded TypeToken from Guava.

The class file is marked as an inner class of com.google.common.reflect.TypeToken.

suztomo@suxtomo24:~/cloud-opensource-java$ javap -cp /usr/local/google/home/suztomo/.m2/repository/org/apache/curator/curator-client/4.2.0/curator-client-4.2.0.jar 'org.apache.curator.shaded.com.google.common.reflect.TypeToken$Bounds'
Compiled from "TypeToken.java"
class org.apache.curator.shaded.com.google.common.reflect.TypeToken$Bounds {
  org.apache.curator.shaded.com.google.common.reflect.TypeToken$Bounds(java.lang.reflect.Type[], boolean);
  boolean isSubtypeOf(java.lang.reflect.Type);
  boolean isSupertypeOf(java.lang.reflect.Type);
}
suztomo@suxtomo24:~/cloud-opensource-java$ javap -cp /usr/local/google/home/suztomo/.m2/repository/org/apache/curator/curator-client/4.2.0/curator-client-4.2.0.jar 'org.apache.curator.shaded.com.google.common.reflect.TypeToken'
Error: class not found: org.apache.curator.shaded.com.google.common.reflect.TypeToken
suztomo@suxtomo24:~/cloud-opensource-java$ javap -cp /usr/local/google/home/suztomo/.m2/repository/org/apache/curator/curator-client/4.2.0/curator-client-4.2.0.jar 'com.google.common.reflect.TypeToken'
Error: class not found: com.google.common.reflect.TypeToken

@elharo
Copy link
Contributor

elharo commented Jan 9, 2020

Is the problem that they shaded the inner class without shading the outer class? I'm surprised that's even possible.

@suztomo
Copy link
Contributor

suztomo commented Jan 9, 2020

The problem is not solely about curator-client..

  • Curator-client has guava 27.0.1-jre dependency. This version of Guava has the outer class TypeToken.
  • HBase's dependencies picks up Guava 11.0.2. (dependency tree)
  • Guava's TypeToken was introduced in Guava 12.0. (TypeToken.java)

@elharo
Copy link
Contributor

elharo commented Jan 9, 2020

Guava 11?! Their hadoop dependency is really old too. Some upgrades are needed here.

@iemejia
Copy link
Author

iemejia commented Jan 14, 2020

Thanks I just checked and it works like a charm (with the SNAPSHOT). I was wondering if we could somehow integrate this tool with Maven's own shade plugin to make it aware of these issues while shading, because otherwise is going to be and endless battle.

@elharo
Copy link
Contributor

elharo commented Jan 14, 2020

That's an interesting idea. I'll file a Maven issue to look into it. There is one case I know of where shaded classes are full of linkage errors and the developers insist they won't be called and don't matter. They might be right but it's worth thinking about.

@elharo
Copy link
Contributor

elharo commented Jan 14, 2020

@suztomo
Copy link
Contributor

suztomo commented Jan 15, 2020

@iemejia Thank you for confirmation. We released a new version that includes this fix:

          <dependency>
            <groupId>com.google.cloud.tools</groupId>
            <artifactId>linkage-checker-enforcer-rules</artifactId>
            <version>1.1.1</version>
          </dependency>

@iemejia
Copy link
Author

iemejia commented Jan 15, 2020

@elharo Yes that's a good argument but a bit risky, maybe to make the argument more solid they should shade only the classes that are used by the project + its linked classes (I don't know if this is possible but sounds at least most robust, but error-prone in the case of reflection). In the meantime most projects that don't use this linkage checking tool must live on faith until something breaks.

@iemejia
Copy link
Author

iemejia commented Jan 15, 2020

And btw I don't think I have seen a single project that shades jetty correctly until now. Have you? Because I am interested on fixing that in other places.

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

Successfully merging a pull request may close this issue.

3 participants