2011-11-28 22 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 पर । जावा: 176) java.util.jar.JarVerifier.processEntry (JarVerifier.java6588) 012 पर java.util.jar.JarVerifier.update (JarVerifier.java:199) java.util.jar.JarFile.initializeVerifier (JarFile.java:323) java.util.jar.JarFile.getInputStream पर पर (JarFile पर। जावा: 388) sun.misc.URLClassPath $ JarLoader $ 2.getInputStream (URLClassPath.java:692) sun.misc.Resource.cachedInputStream (Resource.java:61) sun.misc.Resource.getByteBuffer (संसाधन पर .java: 144) java.net.URLClassLoader.defineClass (URLClassLoader.java:256) पर java.net.URLClassLoader.access $ 000 (URLClassLoader.java:58) java.net.URLClassLoader $ 1.run (URLClassLoader .java: 1 9 7) java.security.AccessController.doPrivileged (मूल विधि) java.net.URLClas पर sLoader.findClass (URLClassLoader.java:190) java.lang.ClassLoader.loadClass (ClassLoader.java:306) sun.misc.Launcher $ AppClassLoader.loadClass (Launcher.java:301) java.lang पर। ClassLoader.loadClass (ClassLoader.java347) मुख्य श्रेणी नहीं ढूंढ सका: com.mainClass। कार्यक्रम बाहर निकल जाएगा।

मेरे पोम:

<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

समस्या जावा संस्करण के कारण है। मैंने यह नहीं देखा कि मेरा नया विचार स्वचालित रूप से आईबीएम के जावा का उपयोग करता है, जब मैं सूर्य के जावा में जेरे बदलता हूं, यह अच्छी तरह से काम करता है :)

0

स्टैकट्रेस की अंतिम पंक्ति के ऊपर का कहना है

मुख्य वर्ग नहीं मिल सका: com.mainClass।

शायद कक्षा नाम या कक्षा में एक टाइपो प्लगइन से पहले संकलित नहीं किया गया है?

+0

क्षमा करें, मुझे नहीं लगता कि यह नाम की समस्या है। या इसे अपवाद को noclassdeffoundexception के रूप में देना चाहिए। –

26

SecurityException आता है क्योंकि आपकी निर्भरता में से एक एक हस्ताक्षरित जार है। जैसा कि छाया प्लगइन इस जार को दोबारा कर रहा है, यह अमान्य हो जाता है। ->SecurityException लॉन्च

समस्या को हल करने के लिए, आपको पर निर्भर करते हुए निर्भरता जार को अनदेखा करना होगा। यह केवल, फ़ाइलों को जार पर हस्ताक्षर किए बनाने repacking एक फिल्टर का उपयोग नहीं किया जा सकता है:

<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

संबंधित मुद्दे