2011-11-28 46 views
12

我有以下異常:在線程Maven的遮陽罐子拋出異常

異常「主要」 java.lang.SecurityException異常:無manifiest 部分簽署文件條目 的javax /安全/證書/ CertificateException.class 在sun.security.util.SignatureFileVerifier.verifySection(SignatureFileVerifier.java:380) 在sun.security.util.SignatureFileVerifier.processImpl(SignatureFileVerifier.java:231) 在sun.security.util.SignatureFileVerifier.process(SignatureFileVerifier。 java:176) at java.util.jar.JarVerifier.processEntry(JarVerifier.java:288)012 (JarVerifier.java:199) at java.util.jar.JarFile.initializeVerifier(JarFile.java:323) at java.util.jar.JarFile.getInputStream(JarFile。 java:388) at sun.misc.URLClassPath $ JarLoader $ 2.getInputStream(URLClassPath.java:692) at sun.misc.Resource.cachedInputStream(Resource.java:61) at sun.misc.Resource.getByteBuffer(Resource .java:144) at java.net.URLClassLoader.defineClass(URLClassLoader.java:256) at java.net.URLClassLoader.access $ 000(URLClassLoader.java:58) at java.net.URLClassLoader $ 1.run(URLClassLoader .java:197) at java.net.URLClas上的java.security.AccessController.doPrivileged(Native Method) sLoader.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> 

回答

1

的問題是因爲Java版本。 我沒有注意到我的新ide自動使用ibm的java,當我將jre更改爲sun的java時,它效果不錯:)

0

堆棧跟蹤的最後一行上面說

找不到主類:com.mainClass。

也許在調用插件之前沒有編譯類名或類中的拼寫錯誤?

+0

對不起,我不認爲這是名稱的問題。或者它應該給noclassdeffoundexception一個例外。 –

26

SecurityException出現是因爲你的一個依賴是一個簽名的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> 

這種溶液從這裏提取: http://jira.codehaus.org/browse/MSHADE-61