Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Maven shade插件找不到';mainClass';例外?_Java_Maven_Maven Shade Plugin - Fatal编程技术网

Java Maven shade插件找不到';mainClass';例外?

Java Maven shade插件找不到';mainClass';例外?,java,maven,maven-shade-plugin,Java,Maven,Maven Shade Plugin,在一个标准的maven项目中,有一个非常奇怪的版本,带有maven shade插件:2.4.3。执行maven package命令时,总是抛出找不到mainClass异常。我只是模拟了一个maven shade插件示例,如下所示: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="ht

在一个标准的maven项目中,有一个非常奇怪的版本,带有
maven shade插件:2.4.3
。执行maven package命令时,总是抛出找不到
mainClass
异常。我只是模拟了一个maven shade插件示例,如下所示:

<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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.mkyong.core.utils</groupId>
    <artifactId>dateUtils</artifactId>
    <packaging>jar</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>dateUtils</name>
    <url>http://maven.apache.org</url>

    <properties>
        <jdk.version>1.7</jdk.version>
        <jodatime.version>2.5</jodatime.version>
        <junit.version>4.11</junit.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>joda-time</groupId>
            <artifactId>joda-time</artifactId>
            <version>${jodatime.version}</version>
        </dependency>
    </dependencies>

    <build>
        <finalName>dateutils</finalName>

        <resources>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
        </resources>
        <plugins>

            <!-- download source code in Eclipse, best practice -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-eclipse-plugin</artifactId>
                <version>2.9</version>
                <configuration>
                    <downloadSources>true</downloadSources>
                    <downloadJavadocs>false</downloadJavadocs>
                </configuration>
            </plugin>

            <!-- Set a compiler level -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>${jdk.version}</source>
                    <target>${jdk.version}</target>
                </configuration>
            </plugin>

            <!-- Maven Shade Plugin -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>2.4.3</version>
                <executions>
                    <!-- Run shade goal on package phase -->
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
          </execution>
                </executions>
        <configuration>
            <shadedArtifactAttached>true</shadedArtifactAttached>
            <shadedClassifierName>jar-with-dependencies</shadedClassifierName>
            <filters>
                <filter>
                    <artifact>*:*</artifact>
                    <excludes>
                        <exclude>META-INF/*.SF</exclude>
                        <exclude>META-INF/*.DSA</exclude>
                        <exclude>META-INF/*.RSA</exclude>
                    </excludes>
                </filter>
            </filters>
            <transformers>
              <transformer
                      implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                  <mainClass>com.mkyong.core.utils.App</mainClass>
              </transformer>
          </transformers>
        </configuration>

            </plugin>

        </plugins>
    </build>

</project>
所以模块将扩展父级,但当包抛出异常时,表示:

[ERROR]无法执行goal org.apache.maven.plugins:maven shade plugin:2.4.3:shade(默认)在project analytics sdk storm local上:无法解析mojo org.apache.maven.plugins:maven shade plugin:2.4.3:shade for parameter mainClass:在类org.apache.maven.plugins.shade.resource.AppendingTransformer->[帮助1]

但是为什么会这样。有maven dependencies树显示:

[INFO] --- maven-dependency-plugin:2.10:tree (default-cli) @ xxxxx ---
[INFO] local:jar:1.0.1-SNAPSHOT
[INFO] +- org.apache.kafka:kafka_2.10:jar:0.8.1.1:compile
[INFO] |  +- com.yammer.metrics:metrics-core:jar:2.2.0:compile
[INFO] |  +- org.xerial.snappy:snappy-java:jar:1.1.2:compile
[INFO] |  +- net.sf.jopt-simple:jopt-simple:jar:3.2:compile
[INFO] |  +- org.scala-lang:scala-library:jar:2.10.1:compile
[INFO] |  \- com.101tec:zkclient:jar:0.3:compile
[INFO] +- org.apache.storm:storm-core:jar:0.9.3:provided
[INFO] |  +- org.clojure:clojure:jar:1.5.1:provided
[INFO] |  +- clj-time:clj-time:jar:0.4.1:provided
[INFO] |  +- joda-time:joda-time:jar:2.8.2:provided
[INFO] |  +- compojure:compojure:jar:1.1.3:provided
[INFO] |  +- org.clojure:core.incubator:jar:0.1.0:provided
[INFO] |  +- org.clojure:tools.macro:jar:0.1.0:provided
[INFO] |  +- clout:clout:jar:1.0.1:provided
[INFO] |  +- ring:ring-core:jar:1.1.5:provided
[INFO] |  +- commons-fileupload:commons-fileupload:jar:1.3.1:provided
[INFO] |  +- javax.servlet:servlet-api:jar:2.5:provided
[INFO] |  +- hiccup:hiccup:jar:0.3.6:provided
[INFO] |  +- ring:ring-devel:jar:0.3.11:provided
[INFO] |  +- clj-stacktrace:clj-stacktrace:jar:0.2.2:provided
[INFO] |  +- ring:ring-jetty-adapter:jar:0.3.11:provided
[INFO] |  +- ring:ring-servlet:jar:0.3.11:provided
[INFO] |  +- org.mortbay.jetty:jetty:jar:6.1.26:provided
[INFO] |  +- org.mortbay.jetty:jetty-util:jar:6.1.26:provided
[INFO] |  +- org.clojure:tools.logging:jar:0.2.3:provided
[INFO] |  +- org.clojure:math.numeric-tower:jar:0.0.1:provided
[INFO] |  +- org.clojure:tools.cli:jar:0.2.4:provided
[INFO] |  +- commons-io:commons-io:jar:2.4:provided
[INFO] |  +- org.apache.commons:commons-exec:jar:1.1:provided
[INFO] |  +- commons-lang:commons-lang:jar:2.5:provided
[INFO] |  +- com.googlecode.json-simple:json-simple:jar:1.1.1:provided
[INFO] |  |  \- junit:junit:jar:4.12:provided
[INFO] |  |     \- org.hamcrest:hamcrest-core:jar:1.3:provided
[INFO] |  +- com.twitter:carbonite:jar:1.4.0:provided
[INFO] |  +- com.esotericsoftware.kryo:kryo:jar:2.21:provided
[INFO] |  +- com.esotericsoftware.reflectasm:reflectasm:jar:shaded:1.07:provided
[INFO] |  +- org.ow2.asm:asm:jar:4.0:compile
[INFO] |  +- com.esotericsoftware.minlog:minlog:jar:1.2:provided
[INFO] |  +- org.objenesis:objenesis:jar:1.2:compile
[INFO] |  +- com.twitter:chill-java:jar:0.3.5:provided
[INFO] |  +- org.yaml:snakeyaml:jar:1.16:provided
[INFO] |  +- commons-logging:commons-logging:jar:1.1.3:provided
[INFO] |  +- commons-codec:commons-codec:jar:1.9:provided
[INFO] |  +- com.googlecode.disruptor:disruptor:jar:2.10.1:provided
[INFO] |  +- org.jgrapht:jgrapht-core:jar:0.9.0:provided
[INFO] |  +- ch.qos.logback:logback-classic:jar:1.1.5:provided
[INFO] |  +- ch.qos.logback:logback-core:jar:1.0.13:provided
[INFO] |  +- org.slf4j:slf4j-api:jar:1.7.12:compile
[INFO] |  +- org.slf4j:log4j-over-slf4j:jar:1.7.16:provided
[INFO] |  \- jline:jline:jar:2.11:compile
[INFO] +- org.apache.storm:storm-kafka:jar:0.9.3:compile
[INFO] |  \- org.apache.curator:curator-framework:jar:2.5.0:compile
[INFO] |     +- org.apache.curator:curator-client:jar:2.5.0:compile
[INFO] |     +- org.apache.zookeeper:zookeeper:jar:3.4.6:compile
[INFO] |     |  \- io.netty:netty:jar:3.7.0.Final:compile
[INFO] |     \- com.google.guava:guava:jar:19.0:compile
[INFO] +- so.sao.analytics:analytics-sdk-common:jar:1.0.1-SNAPSHOT:compile
[INFO] |  +- com.esotericsoftware:kryo:jar:3.0.3:compile
[INFO] |  |  +- com.esotericsoftware:reflectasm:jar:1.10.1:compile
[INFO] |  |  \- com.esotericsoftware:minlog:jar:1.3.0:compile
[INFO] |  \- org.mapdb:mapdb:jar:2.0-beta12:compile
[INFO] \- so.sao.analytics:analytics-sdk-storm-common:jar:1.0.1-SNAPSHOT:compile

我真的不知道为什么失败了。现在只需注释代码。如果您遇到了这个,请告诉我,谢谢。

根据您发布的内容,您已经从插件配置中删除了很多内容。在
部分,您需要指定目标

修改pom.xml如下

<project>
    ...
    <build>
        <plugins>
            ...
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>2.4.3</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <transformers>
                        <transformer
                            implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                            <mainClass>your.Main</mainClass>
                        </transformer>
                    </transformers>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
由于没有显示您的
pom.xml
,请查看以下差异

在作为实现类发布的
pom.xml
代码片段中

org.apache.maven.plugins.shade.resource.ManifestResourceTransformer
但例外情况是抱怨

org.apache.maven.plugins.shade.resource.AppendingTransformer

我也有同样的问题。原来这是由配置Spring引导带来的。我使用SpringBootStarter家长作为我的家长pom

通过设置
start class
属性并从pom.xml中的shade插件中删除
ManifestResourceTransformer
配置,我解决了这个问题

<properties>
  <start-class>package.Main</start-class>
</properties>

包.主

我通过在有效的pom中搜索
ManifestResourceTransformer

找到了这个属性是的,在我的父模块
pom.xml
文件中有相同的配置。也有参考官方用法。但还是失败了。在我的另一个项目中,这些设置运行良好。“太奇怪了!”埃尔坎1788看看我最新的答案。可能在您实际使用的
pom.xml
中存在某种类型的输入错误。谢谢,我的
pom.xml
文件中的核心与演示相同,您可以看到我的升级问题。我也觉得和你一样奇怪,为什么它会抛出附加变压器异常。也许在我的项目中还有其他一些错误设置?请
org.apache.maven.plugins.shade.resource.ManifestResourceTransformer
org.apache.maven.plugins.shade.resource.AppendingTransformer
<properties>
  <start-class>package.Main</start-class>
</properties>