samuelowino opened a new issue, #791:
URL: https://github.com/apache/maven-shade-plugin/issues/791

   ### Affected version
   
   3.6.1
   
   ### Bug description
   
   # GitHub Issue: Support for Java 25 Class Files (Major Version 69)
   
   ---
   
   **Issue Title:** Add support for Java 25 class files (major version 69)
   
   **Description:**
   
   ## Problem
   
   When building projects with Java 25, the Maven Shade Plugin fails with the 
following error:
   
   **pom.xml**
   
   ```xml
   <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-shade-plugin</artifactId>
           <version>3.6.1</version>
           <configuration>
             <minimizeJar>true</minimizeJar>
             <transformers>
               <transformer 
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                 <mainClass>com.owino.desktop.AppGUI</mainClass>
               </transformer>
             </transformers>
           </configuration>
           <executions>
             <execution>
               <phase>package</phase>
               <goals>
                 <goal>shade</goal>
               </goals>
             </execution>
           </executions>
         </plugin>
   ```
   
   ```
   [ERROR] Failed to execute goal 
org.apache.maven.plugins:maven-shade-plugin:3.6.1:shade (default) on project 
my-project: Error creating shaded jar: Unsupported class file major version 69
   Caused by: java.lang.IllegalArgumentException: Unsupported class file major 
version 69
   ```
   
   ```java
   [ERROR] Failed to execute goal 
org.apache.maven.plugins:maven-shade-plugin:3.6.1:shade (default) on project 
osqa: Error creating shaded jar: Unsupported class file major version 69 -> 
[Help 1]
   org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute 
goal org.apache.maven.plugins:maven-shade-plugin:3.6.1:shade (default) on 
project osqa: Error creating shaded jar: Unsupported class file major version 69
       at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 
(MojoExecutor.java:333)
       at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute 
(MojoExecutor.java:316)
       at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
(MojoExecutor.java:212)
       at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
(MojoExecutor.java:174)
       at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 
(MojoExecutor.java:75)
       at org.apache.maven.lifecycle.internal.MojoExecutor$1.run 
(MojoExecutor.java:162)
       at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute 
(DefaultMojosExecutionStrategy.java:39)
       at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
(MojoExecutor.java:159)
       at 
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject 
(LifecycleModuleBuilder.java:105)
       at 
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject 
(LifecycleModuleBuilder.java:73)
       at 
org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build
 (SingleThreadedBuilder.java:53)
       at org.apache.maven.lifecycle.internal.LifecycleStarter.execute 
(LifecycleStarter.java:118)
       at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261)
       at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173)
       at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101)
       at org.apache.maven.cli.MavenCli.execute (MavenCli.java:903)
       at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:280)
       at org.apache.maven.cli.MavenCli.main (MavenCli.java:203)
       at jdk.internal.reflect.DirectMethodHandleAccessor.invoke 
(DirectMethodHandleAccessor.java:104)
       at java.lang.reflect.Method.invoke (Method.java:565)
       at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced 
(Launcher.java:255)
       at org.codehaus.plexus.classworlds.launcher.Launcher.launch 
(Launcher.java:201)
       at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode 
(Launcher.java:361)
       at org.codehaus.plexus.classworlds.launcher.Launcher.main 
(Launcher.java:314)
   Caused by: org.apache.maven.plugin.MojoExecutionException: Error creating 
shaded jar: Unsupported class file major version 69
       at org.apache.maven.plugins.shade.mojo.ShadeMojo.execute 
(ShadeMojo.java:663)
       at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo 
(DefaultBuildPluginManager.java:126)
       at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 
(MojoExecutor.java:328)
       at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute 
(MojoExecutor.java:316)
       at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
(MojoExecutor.java:212)
       at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
(MojoExecutor.java:174)
       at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 
(MojoExecutor.java:75)
       at org.apache.maven.lifecycle.internal.MojoExecutor$1.run 
(MojoExecutor.java:162)
       at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute 
(DefaultMojosExecutionStrategy.java:39)
       at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
(MojoExecutor.java:159)
       at 
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject 
(LifecycleModuleBuilder.java:105)
       at 
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject 
(LifecycleModuleBuilder.java:73)
       at 
org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build
 (SingleThreadedBuilder.java:53)
       at org.apache.maven.lifecycle.internal.LifecycleStarter.execute 
(LifecycleStarter.java:118)
       at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261)
       at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173)
       at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101)
       at org.apache.maven.cli.MavenCli.execute (MavenCli.java:903)
       at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:280)
       at org.apache.maven.cli.MavenCli.main (MavenCli.java:203)
       at jdk.internal.reflect.DirectMethodHandleAccessor.invoke 
(DirectMethodHandleAccessor.java:104)
       at java.lang.reflect.Method.invoke (Method.java:565)
       at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced 
(Launcher.java:255)
       at org.codehaus.plexus.classworlds.launcher.Launcher.launch 
(Launcher.java:201)
       at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode 
(Launcher.java:361)
       at org.codehaus.plexus.classworlds.launcher.Launcher.main 
(Launcher.java:314)
   Caused by: java.lang.IllegalArgumentException: Unsupported class file major 
version 69
       at org.vafer.jdeb.shaded.objectweb.asm.ClassReader.<init> 
(ClassReader.java:200)
       at org.vafer.jdeb.shaded.objectweb.asm.ClassReader.<init> 
(ClassReader.java:180)
       at org.vafer.jdeb.shaded.objectweb.asm.ClassReader.<init> 
(ClassReader.java:166)
       at org.vafer.jdeb.shaded.objectweb.asm.ClassReader.<init> 
(ClassReader.java:288)
       at org.vafer.jdependency.Clazzpath.addClazzpathUnit (Clazzpath.java:179)
       at org.vafer.jdependency.Clazzpath.addClazzpathUnit (Clazzpath.java:151)
       at org.apache.maven.plugins.shade.filter.MinijarFilter.<init> 
(MinijarFilter.java:104)
       at org.apache.maven.plugins.shade.mojo.ShadeMojo.getFilters 
(ShadeMojo.java:992)
       at org.apache.maven.plugins.shade.mojo.ShadeMojo.execute 
(ShadeMojo.java:521)
       at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo 
(DefaultBuildPluginManager.java:126)
       at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 
(MojoExecutor.java:328)
       at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute 
(MojoExecutor.java:316)
       at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
(MojoExecutor.java:212)
       at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
(MojoExecutor.java:174)
       at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 
(MojoExecutor.java:75)
       at org.apache.maven.lifecycle.internal.MojoExecutor$1.run 
(MojoExecutor.java:162)
       at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute 
(DefaultMojosExecutionStrategy.java:39)
       at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
(MojoExecutor.java:159)
       at 
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject 
(LifecycleModuleBuilder.java:105)
       at 
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject 
(LifecycleModuleBuilder.java:73)
       at 
org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build
 (SingleThreadedBuilder.java:53)
       at org.apache.maven.lifecycle.internal.LifecycleStarter.execute 
(LifecycleStarter.java:118)
       at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261)
       at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173)
       at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101)
       at org.apache.maven.cli.MavenCli.execute (MavenCli.java:903)
       at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:280)
       at org.apache.maven.cli.MavenCli.main (MavenCli.java:203)
       at jdk.internal.reflect.DirectMethodHandleAccessor.invoke 
(DirectMethodHandleAccessor.java:104)
       at java.lang.reflect.Method.invoke (Method.java:565)
       at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced 
(Launcher.java:255)
       at org.codehaus.plexus.classworlds.launcher.Launcher.launch 
(Launcher.java:201)
       at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode 
(Launcher.java:361)
       at org.codehaus.plexus.classworlds.launcher.Launcher.main 
(Launcher.java:314)
   [ERROR] 
   [ERROR] Re-run Maven using the -X switch to enable full debug logging.
   [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/MojoExecutionException
   ```
   
   ##  Analysis
   
   The error occurs because the ASM library bundled with the Maven Shade Plugin 
doesn't yet support Java 25 class files (major version 69). Even though version 
3.6.1 was previously updated to support Java 25 , the error persists, 
indicating that the ASM version needs further updates.
   
   | Major Version | Java Release |
   |--------------|--------------|
   | 65 | Java 21 |
   | 66 | Java 22 |
   | 67 | Java 23 |
   | 68 | Java 24 |
   | **69** | **Java 25** |
   
   ## 💻 Steps to Reproduce
   
   1. Set up a project using Java 25 (early access)
   2. Configure the Maven Shade Plugin (any version up to 3.6.1)
   3. Run `mvn clean package`
   4. Observe the error when the plugin attempts to process class files
   
   ## 📋 Expected Behavior
   
   The Maven Shade Plugin should successfully process Java 25 class files 
without throwing an `Unsupported class file major version` exception.
   
   ## 🛠️ Suggested Fix
   
   Update the embedded ASM library to a version that supports Java 25 class 
files. According to the ASM version mapping:
   - ASM 9.7+ should support Java 25 (major version 69)
   
   ## 🔗 Related Issues
   
   - Similar issue reported in Apache Flink: 
[FLINK-38391](https://issues.apache.org/jira/browse/FLINK-38391) 
   - Community discussions on Stack Overflow 
   
   ## 📦 Environment
   
   - Maven Shade Plugin Version: 3.6.1 (and earlier)
   - Java Version: 25 (early access/preview)
   - Maven Version: Any
   
   ## 💡 Workaround
   
   I was able to work around this by:
   1. Disabling `<minimizeJar>true</minimizeJar>` 
   2. Adding ASM 9.7+ as a plugin dependency
   
   ```java
   <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-shade-plugin</artifactId>
           <version>3.6.1</version>
           <dependencies>
             <dependency>
               <groupId>org.ow2.asm</groupId>
               <artifactId>asm</artifactId>
               <version>9.9.1</version>
             </dependency>
             <dependency>
               <groupId>org.ow2.asm</groupId>
               <artifactId>asm-commons</artifactId>
               <version>9.9.1</version>
             </dependency>
           </dependencies>
           <configuration>
             <minimizeJar>false</minimizeJar>
             <transformers>
               <transformer 
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                 <mainClass>com.owino.desktop.AppGUI</mainClass>
               </transformer>
             </transformers>
           </configuration>
           <executions>
             <execution>
               <phase>package</phase>
               <goals>
                 <goal>shade</goal>
               </goals>
             </execution>
           </executions>
         </plugin>
   ```
   
   However, a permanent fix in the plugin would be preferable.
   
   Gracias! 
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to