Maven遮阳罐抛出异常

问题描述 投票:12回答:3

我有以下例外:

线程“main”中的异常java.lang.SecurityException:在sun.security的sun.security.util.SignatureFileVerifier.verifySection(SignatureFileVerifier.java:380)中没有签名文件条目javax / security / cert / CertificateException.class的最明显部分。 util.SignatureFileVerifier.processImpl(SignatureFileVerifier.java:231)位于java.util的java.util.jar.JarVerifier.processEntry(JarVerifier.java:288)的sun.security.util.SignatureFileVerifier.process(SignatureFileVerifier.java:176) .jar.JarVerifier.update(JarVerifier.java:199)位于sun的java.util.jar.JarFile.getInputStream(JarFile.java:388)java.util.jar.JarFile.initializeVerifier(JarFile.java:323)。 misc.URLClassPath $ JarLoader $ 2.getInputStream(URLClassPath.java:692)位于sun.net的sun.misc.Resource.getByteBuffer(Resource.java:144)的sun.misc.Resource.cachedInputStream(Resource.java:61)。 URLClassLoader.defineClass(URLClassLoader.java:256)at java.net.URLClassLoader.access $ 000(URLClassLoader.java:58)at java.net.URLClassLoader $ 1.run(URLCl) assLoader.java:197)java.security.AccessController.doPrivileged(Native Method)at java.net.URLClassLoader.findClass(URLClassLoader.java:190)at java.lang.ClassLoader.loadClass(ClassLoader.java:306)at sun .misc.Launcher $ AppClassLoader.loadClass(Launcher.java:301)at java.lang.ClassLoader.loadClass(ClassLoader.java:247)找不到主类:com.mainClass。程序将会退出。

我的pom:

<plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-shade-plugin</artifactId>
                <version>1.5</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <filter>
                            <excludes>
                                <exclude>META-INF/*.SF</exclude>
                                <exclude>META-INF/*.DSA</exclude>
                                <exclude>META-INF/*.RSA</exclude>
                            </excludes>
                        </filter>
                        <transformers>
                            <transformer
                                implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                <mainClass>com.mainClass</mainClass>
                            </transformer>
                        </transformers>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
maven exception maven-shade-plugin
3个回答
26
投票

SecurityException出现是因为你的一个依赖是一个签名的jar。当阴影插件重新打包这个jar时,它会变得无效。 - > SecurityException发布时

要解决此问题,您必须在重新打包时取消签名依赖项jar。这可以通过使用过滤器简单地不重新打包使jar签名的文件来完成:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>1.5</version>
    <executions>
        <execution>
            <id>stand-alone</id>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
            <configuration>
                <shadedArtifactAttached>true</shadedArtifactAttached>
                <shadedClassifierName>stand-alone</shadedClassifierName>
                <filters>
                    <filter>
                        <!--
                            Exclude files that sign a jar
                            (one or multiple of the dependencies).
                            One may not repack a signed jar without
                            this, or you will get a
                            SecurityException at program start.
                        -->
                        <artifact>*:*</artifact>
                        <excludes>
                            <exclude>META-INF/*.SF</exclude>
                            <exclude>META-INF/*.RSA</exclude>
                            <exclude>META-INF/*.INF</exclude> <!-- This one may not be required -->
                        </excludes>
                    </filter>
                </filters>
            </configuration>
        </execution>
    </executions>
</plugin>

这个解决方案是从这里提取的:https://issues.apache.org/jira/browse/MSHADE-61


2
投票

问题是因为java版本。我没有注意到我的新ide自动使用ibm的java,当我将jre更改为sun的java时,它运行良好:)


0
投票

上面的堆栈跟踪的最后一行说

找不到主类:com.mainClass。

也许在调用插件之前没有编译classname或类中的拼写错误?

© www.soinside.com 2019 - 2024. All rights reserved.