Unable to close maven jar (INVOKESPECIAL / STATIC)

Full error message:

Failed to fulfill the goal org.apache.maven.plugins: maven-shade-plugin: 2.3: shade (default) in the project -: Error creating a shaded can: INVOKESPECIAL / STATIC on interfaces requires ASM 5 → [Help 1]

The jarfile I'm trying to obscure is in my own remote repository using the nexus sonata link. Here is my pom configuration:

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.codelanx</groupId> <artifactId>phanaticprison</artifactId> <version>1.0.0</version> <name>PhanaticPrison</name> <packaging>jar</packaging> <repositories> <repository> <id>bukkit-repo</id> <url>http://repo.bukkit.org/content/repositories/public/</url> </repository> <repository> <id>codelanx-repo</id> <url>http://repo.codelanx.com/content/repositories/public/</url> </repository> </repositories> <licenses> <license> <name>Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International</name> <url>https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode</url> <distribution>repo</distribution> </license> </licenses> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>2.3</version> <configuration> <artifactSet> <includes> <include>com.codelanx:codelanxlib</include> </includes> </artifactSet> <minimizeJar>true</minimizeJar> </configuration> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> </execution> </executions> </plugin> </plugins> <resources> <resource> <targetPath>.</targetPath> <directory>${basedir}/src/main/resources</directory> <filtering>true</filtering> </resource> </resources> <finalName>${project.name}</finalName> </build> <dependencies> <dependency> <groupId>org.bukkit</groupId> <artifactId>bukkit</artifactId> <version>LATEST</version> <type>jar</type> </dependency> <dependency> <groupId>com.codelanx</groupId> <artifactId>codelanxlib</artifactId> <version>LATEST</version> <type>jar</type> </dependency> </dependencies> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> </project> 

It seems like an error leading to very small results, the main parts of the information that I collected was that the Static methods of the Java 8 interface could lead to this , however I could not find much more. The jarfile I am trying to obscure does have one of these static methods , but even so, should I be able to use them and obscure the jar? I'm not sure what the error means, requiring "ASM 5" (build?), So any direction would be appreciated.

My effective pom ( mvn help:effective-pom ):

 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.phanaticmc</groupId> <artifactId>phanaticprison</artifactId> <version>1.0.0</version> <name>PhanaticPrison</name> <licenses> <license> <name>Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International</name> <url>https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode</url> <distribution>repo</distribution> </license> </licenses> <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>org.bukkit</groupId> <artifactId>bukkit</artifactId> <version>LATEST</version> <scope>compile</scope> </dependency> <dependency> <groupId>com.codelanx</groupId> <artifactId>codelanxlib</artifactId> <version>LATEST</version> <scope>compile</scope> </dependency> </dependencies> <repositories> <repository> <id>bukkit-repo</id> <url>http://repo.bukkit.org/content/repositories/public/</url> </repository> <repository> <id>codelanx-repo</id> <url>http://repo.codelanx.com/content/repositories/public/</url> </repository> <repository> <snapshots> <enabled>false</enabled> </snapshots> <id>central</id> <name>Central Repository</name> <url>http://repo.maven.apache.org/maven2</url> </repository> </repositories> <pluginRepositories> <pluginRepository> <releases> <updatePolicy>never</updatePolicy> </releases> <snapshots> <enabled>false</enabled> </snapshots> <id>central</id> <name>Central Repository</name> <url>http://repo.maven.apache.org/maven2</url> </pluginRepository> </pluginRepositories> <build> <sourceDirectory>C:\Users\Spencer\Documents\NetBeansProjects\PhanaticPrison\src\main\java</sourceDirectory> <scriptSourceDirectory>C:\Users\Spencer\Documents\NetBeansProjects\PhanaticPrison\src\main\scripts</scriptSourceDirectory> <testSourceDirectory>C:\Users\Spencer\Documents\NetBeansProjects\PhanaticPrison\src\test\java</testSourceDirectory> <outputDirectory>C:\Users\Spencer\Documents\NetBeansProjects\PhanaticPrison\target\classes</outputDirectory> <testOutputDirectory>C:\Users\Spencer\Documents\NetBeansProjects\PhanaticPrison\target\test-classes</testOutputDirectory> <resources> <resource> <targetPath>.</targetPath> <filtering>true</filtering> <directory>C:\Users\Spencer\Documents\NetBeansProjects\PhanaticPrison\src\main\resources</directory> </resource> </resources> <testResources> <testResource> <directory>C:\Users\Spencer\Documents\NetBeansProjects\PhanaticPrison\src\test\resources</directory> </testResource> </testResources> <directory>C:\Users\Spencer\Documents\NetBeansProjects\PhanaticPrison\target</directory> <finalName>PhanaticPrison</finalName> <pluginManagement> <plugins> <plugin> <artifactId>maven-antrun-plugin</artifactId> <version>1.3</version> </plugin> <plugin> <artifactId>maven-assembly-plugin</artifactId> <version>2.2-beta-5</version> </plugin> <plugin> <artifactId>maven-dependency-plugin</artifactId> <version>2.1</version> </plugin> <plugin> <artifactId>maven-release-plugin</artifactId> <version>2.0</version> </plugin> </plugins> </pluginManagement> <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> <version>2.4</version> </plugin> <plugin> <artifactId>maven-dependency-plugin</artifactId> <version>2.8</version> </plugin> <plugin> <artifactId>maven-shade-plugin</artifactId> <version>2.3</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <artifactSet> <includes> <include>com.codelanx:codelanxlib</include> </includes> </artifactSet> <minimizeJar>true</minimizeJar> </configuration> </execution> </executions> <configuration> <artifactSet> <includes> <include>com.codelanx:codelanxlib</include> </includes> </artifactSet> <minimizeJar>true</minimizeJar> </configuration> </plugin> <plugin> <artifactId>maven-clean-plugin</artifactId> <version>2.4.1</version> <executions> <execution> <id>default-clean</id> <phase>clean</phase> <goals> <goal>clean</goal> </goals> </execution> </executions> </plugin> <plugin> <artifactId>maven-resources-plugin</artifactId> <version>2.5</version> <executions> <execution> <id>default-testResources</id> <phase>process-test-resources</phase> <goals> <goal>testResources</goal> </goals> </execution> <execution> <id>default-resources</id> <phase>process-resources</phase> <goals> <goal>resources</goal> </goals> </execution> </executions> </plugin> <plugin> <artifactId>maven-jar-plugin</artifactId> <version>2.3.2</version> <executions> <execution> <id>default-jar</id> <phase>package</phase> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <executions> <execution> <id>default-compile</id> <phase>compile</phase> <goals> <goal>compile</goal> </goals> </execution> <execution> <id>default-testCompile</id> <phase>test-compile</phase> <goals> <goal>testCompile</goal> </goals> </execution> </executions> </plugin> <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>2.10</version> <executions> <execution> <id>default-test</id> <phase>test</phase> <goals> <goal>test</goal> </goals> </execution> </executions> </plugin> <plugin> <artifactId>maven-install-plugin</artifactId> <version>2.3.1</version> <executions> <execution> <id>default-install</id> <phase>install</phase> <goals> <goal>install</goal> </goals> </execution> </executions> </plugin> <plugin> <artifactId>maven-deploy-plugin</artifactId> <version>2.7</version> <executions> <execution> <id>default-deploy</id> <phase>deploy</phase> <goals> <goal>deploy</goal> </goals> </execution> </executions> </plugin> <plugin> <artifactId>maven-site-plugin</artifactId> <version>3.0</version> <executions> <execution> <id>default-site</id> <phase>site</phase> <goals> <goal>site</goal> </goals> <configuration> <outputDirectory>C:\Users\Spencer\Documents\NetBeansProjects\PhanaticPrison\target\site</outputDirectory> <reportPlugins> <reportPlugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-project-info-reports-plugin</artifactId> </reportPlugin> </reportPlugins> </configuration> </execution> <execution> <id>default-deploy</id> <phase>site-deploy</phase> <goals> <goal>deploy</goal> </goals> <configuration> <outputDirectory>C:\Users\Spencer\Documents\NetBeansProjects\PhanaticPrison\target\site</outputDirectory> <reportPlugins> <reportPlugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-project-info-reports-plugin</artifactId> </reportPlugin> </reportPlugins> </configuration> </execution> </executions> <configuration> <outputDirectory>C:\Users\Spencer\Documents\NetBeansProjects\PhanaticPrison\target\site</outputDirectory> <reportPlugins> <reportPlugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-project-info-reports-plugin</artifactId> </reportPlugin> </reportPlugins> </configuration> </plugin> </plugins> </build> <reporting> <outputDirectory>C:\Users\Spencer\Documents\NetBeansProjects\PhanaticPrison\target\site</outputDirectory> </reporting> </project> 

Full math stacktrace:

 org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-shade-plugin:2.3:shade (default) on project phanaticprison: Error creating shaded jar: INVOKESPECIAL/STATIC on interfaces require ASM 5 at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:217) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) at org.apache.maven.cli.MavenCli.main(MavenCli.java:141) 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:483) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290) at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352) Caused by: org.apache.maven.plugin.MojoExecutionException: Error creating shaded jar: INVOKESPECIAL/STATIC on interfaces require ASM 5 at org.apache.maven.plugins.shade.mojo.ShadeMojo.execute(ShadeMojo.java:566) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) ... 19 more Caused by: java.lang.IllegalArgumentException: INVOKESPECIAL/STATIC on interfaces require ASM 5 at org.objectweb.asm.MethodVisitor.visitMethodInsn(Unknown Source) at org.objectweb.asm.commons.RemappingMethodAdapter.doVisitMethodInsn(Unknown Source) at org.objectweb.asm.commons.RemappingMethodAdapter.visitMethodInsn(Unknown Source) at org.objectweb.asm.ClassReader.a(Unknown Source) at org.objectweb.asm.ClassReader.b(Unknown Source) at org.objectweb.asm.ClassReader.accept(Unknown Source) at org.objectweb.asm.ClassReader.accept(Unknown Source) at org.vafer.jdependency.Clazzpath.addClazzpathUnit(Clazzpath.java:194) at org.vafer.jdependency.Clazzpath.addClazzpathUnit(Clazzpath.java:130) at org.apache.maven.plugins.shade.filter.MinijarFilter.addDependencyToClasspath(MinijarFilter.java:101) at org.apache.maven.plugins.shade.filter.MinijarFilter.<init>(MinijarFilter.java:81) at org.apache.maven.plugins.shade.mojo.ShadeMojo.getFilters(ShadeMojo.java:805) at org.apache.maven.plugins.shade.mojo.ShadeMojo.execute(ShadeMojo.java:458) ... 21 more 
+6
source share
3 answers

Since I recently got the same issue, and it took me a while to fix this, here is what I did:

The required version for ASM is 5.0.3. However, the currently available version in the shadow plugin is 5.0.2. Looking at JIRA tickets, it looks like it has already been fixed in version 2.4, but this version is not available to the public (this may be May 4, 2015 at the time of writing).

So all you have to do is activate the developer versions (based on https://maven.apache.org/guides/development/guide-testing-development-plugins.html ) by adding this section to your pom:

 <pluginRepositories> <pluginRepository> <id>apache.snapshots</id> <url>http://repository.apache.org/snapshots/</url> </pluginRepository> </pluginRepositories> 

and install the plugin version on 2.4-SNAPSHOT :

 <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>2.4-SNAPSHOT</version> </plugin> </plugins> 

Hope this helps!

+8
source

I studied the sources, and I see that the message "INVOKESPECIAL / STATIC on interfaces requires ASM 5" means that MethodVisitor is an ASM 5 method, but it is not created with the corresponding parameter.

I submitted a patch about jdependency which is accepted. To do this, you need to explicitly use this:

 <dependencies> <dependency> <groupId>org.vafer</groupId> <artifactId>jdependency</artifactId> <version>1.0</version> </dependency> </dependencies> 

It should be included in the maven-shade-plugin version 2.4, though. See Also http://jira.codehaus.org/browse/MSHADE-174

+1
source

I assume that "ASM" means asm library . Definitely make sure that you are working with Maven 3, not Maven 2.x, and personally I would try on the command line and not in the IDE.

When I run mvn dependency:resolve-plugins using Maven 3.0.5 in a project containing a tint plugin, version 2.3, I see these dependencies in the output:

 [INFO] Plugin Resolved: maven-shade-plugin-2.3.jar [INFO] Plugin Dependency Resolved: maven-plugin-api-3.0.jar [INFO] Plugin Dependency Resolved: maven-model-3.0.jar [INFO] Plugin Dependency Resolved: maven-core-3.0.jar [INFO] Plugin Dependency Resolved: maven-compat-3.0.jar [INFO] Plugin Dependency Resolved: maven-artifact-3.0.jar [INFO] Plugin Dependency Resolved: plexus-container-default-1.0-alpha-9-stable-1.jar [INFO] Plugin Dependency Resolved: plexus-utils-3.0.15.jar [INFO] Plugin Dependency Resolved: asm-5.0.2.jar [INFO] Plugin Dependency Resolved: asm-commons-5.0.2.jar [INFO] Plugin Dependency Resolved: jdom-1.1.jar [INFO] Plugin Dependency Resolved: maven-dependency-tree-2.1.jar [INFO] Plugin Dependency Resolved: jdependency-0.9.jar [INFO] Plugin Dependency Resolved: guava-11.0.2.jar 

Pay attention to the ASM libraries, they are both version 5, and this is what the error seems to be asking for. If you run Maven 3 on the command line and still get an error, I agree with Jigar that this is somehow similar to an error in the plugin.

0
source

Source: https://habr.com/ru/post/971349/


All Articles