完整的错误消息:
无法执行目标org.apache.maven.plugins:maven-shade-plugin:2.3:项目阴影(默认) - :创建阴影jar时出错:接口上的INVOKESPECIAL / STATIC需要ASM 5 - > [帮助1]
我尝试着色的jarfile位于my own remote repository,使用sonatype nexus。这是我的pom配置:
<?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>
搜索错误导致的结果非常少,我收集的信息的主要部分是Java 8's static interface methods could cause this,但我还没有找到更多。 jar文件我试图遮蔽does indeed have one of these static methods,但即使我仍然必须能够使用它们并遮住罐子?我不确定错误的含义是通过要求&#34; ASM 5&#34; (汇编?),所以任何方向都会受到赞赏。
我的有效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>
完整的maven 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
答案 0 :(得分:8)
由于我最近遇到了同样的问题并且花了很长时间来修复它,这就是我所做的:
ASM所需的版本是5.0.3。但是,shade插件中当前可用的版本是5.0.2。看看JIRA的门票,它看起来已经在2.4中得到了修复,但是那个版本还没有为公众所用(2015年5月4日到我写这篇文章的时候)。
所以你要做的就是通过将此部分添加到你的pom来激活开发者版本(基于https://maven.apache.org/guides/development/guide-testing-development-plugins.html):
<pluginRepositories>
<pluginRepository>
<id>apache.snapshots</id>
<url>http://repository.apache.org/snapshots/</url>
</pluginRepository>
</pluginRepositories>
并将插件的版本设置为2.4-SNAPSHOT
:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4-SNAPSHOT</version>
</plugin>
</plugins>
希望这有帮助!
答案 1 :(得分:1)
我已经查看了源代码,我看到了这条消息 “接口上的INVOKESPECIAL / STATIC需要ASM 5”意味着 MethodVisitor 是 ASM 5方法,但未使用正确的参数进行实例化。
我提交了一个关于jdependency的补丁,这个补丁被接受了。为了让你受益,你必须明确地使用它:
<dependencies>
<dependency>
<groupId>org.vafer</groupId>
<artifactId>jdependency</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
它应该包含在maven-shade-plugin版本2.4中。 另请参阅http://jira.codehaus.org/browse/MSHADE-174
答案 2 :(得分:0)
我在猜测&#34; ASM&#34;是指asm library。绝对要确保你使用Maven 3而不是Maven 2.x运行,并且我个人尝试使用命令行,而不是在IDE中。
当我使用Maven 3.0.5运行mvn dependency:resolve-plugins
时,在包含shade插件版本2.3的项目中,我在输出中看到了这些依赖项:
[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
注意ASM库,它们都是版本5,这是错误似乎要求的。如果您在命令行上使用Maven 3运行并仍然得到错误,那么我同意Jigar,这似乎是插件中的错误。