[BUG] Depclean failing on Java 15
afillatre opened this issue · 3 comments
Describe the bug
Execution default-cli of goal se.kth.castor:depclean-maven-plugin:2.0.2-SNAPSHOT:depclean failed: Unsupported class file major version 59 -> [Help 1]
To Reproduce
Steps to reproduce the behavior:
- jenv local 15 at project root
mvn clean compile compiler:testCompile se.kth.castor:depclean-maven-plugin:2.0.2-SNAPSHOT:depclean
Expected behavior
depclean
ends without error
Additional context
I'm using depclean on a multi-module maven project. Everything is compiled using Java 15 by the same maven command that execute depclean.
I suspect the integrated ASM version is not compatible with Java 15 yet, I'll do some testings
Here's the full stacktrace :
[ERROR] Failed to execute goal se.kth.castor:depclean-maven-plugin:2.0.2-SNAPSHOT:depclean (default-cli) on project entity-rh: Execution default-cli of goal se.kth.castor:depclean-maven-plugin:2.0.2-SNAPSHOT:depclean failed: Unsupported class file major version 59 -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal se.kth.castor:depclean-maven-plugin:2.0.2-SNAPSHOT:depclean (default-cli) on project entity-rh: Execution default-cli of goal se.kth.castor:depclean-maven-plugin:2.0.2-SNAPSHOT:depclean failed: Unsupported class file major version 59
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 jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:64)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:564)
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 default-cli of goal se.kth.castor:depclean-maven-plugin:2.0.2-SNAPSHOT:depclean failed: Unsupported class file major version 59
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 jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:64)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:564)
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.IllegalArgumentException: Unsupported class file major version 59
at org.objectweb.asm.ClassReader.<init> (ClassReader.java:195)
at org.objectweb.asm.ClassReader.<init> (ClassReader.java:176)
at org.objectweb.asm.ClassReader.<init> (ClassReader.java:162)
at org.objectweb.asm.ClassReader.<init> (ClassReader.java:283)
at se.kth.depclean.core.analysis.asm.DependencyClassFileVisitor.visitClass (DependencyClassFileVisitor.java:53)
at se.kth.depclean.core.analysis.ClassFileVisitorUtils.visitClass (ClassFileVisitorUtils.java:138)
at se.kth.depclean.core.analysis.ClassFileVisitorUtils.acceptDirectory (ClassFileVisitorUtils.java:120)
at se.kth.depclean.core.analysis.ClassFileVisitorUtils.accept (ClassFileVisitorUtils.java:65)
at se.kth.depclean.core.analysis.asm.ASMDependencyAnalyzer.analyze (ASMDependencyAnalyzer.java:45)
at se.kth.depclean.core.analysis.DefaultProjectDependencyAnalyzer.collectDependencyClasses (DefaultProjectDependencyAnalyzer.java:230)
at se.kth.depclean.core.analysis.DefaultProjectDependencyAnalyzer.buildProjectDependencyClasses (DefaultProjectDependencyAnalyzer.java:164)
at se.kth.depclean.core.analysis.DefaultProjectDependencyAnalyzer.analyze (DefaultProjectDependencyAnalyzer.java:93)
at se.kth.depclean.DepCleanMojo.execute (DepCleanMojo.java:417)
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 jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:64)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:564)
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)
That's confirmed. Upgrading to ASM 9.1 fixes this issue. I'm finishing some tests, but if all goes the right way, i'll submit a PR
Hi @afillatre, thanks for reporting this issue.
You are using Java 15 (and compiling your code for it so the generated class files are only valid for Java 15 and newer). The version of ASM used by DepClean is 7.1 (see https://github.com/castor-software/depclean/blob/master/depclean-core/pom.xml#L83), it does not support reading Java 15 classfiles (which is what version 59 corresponds to).
One easy fix is to reconfigure your build to compile for Java 11 or earlier. Or update the version of ASM to the latest, which supports Java 15.
That's confirmed. Upgrading to ASM 9.1 fixes this issue. I'm finishing some tests, but if all goes the right way, i'll submit a PR
Looking forward to this PR.