Ответ 1
Проблема связана с версией java. Я не заметил, что мой новый ide автоматически использует ibm java, когда я изменяю jre на sun java, он работает хорошо:)
У меня есть следующее исключение:
Исключение в потоке "main" java.lang.SecurityException: no manifestiest раздел для записи файла подписи javax/безопасность/CERT/CertificateException.class at sun.security.util.SignatureFileVerifier.verifySection(SignatureFileVerifier.java:380) at sun.security.util.SignatureFileVerifier.processImpl(SignatureFileVerifier.java:231) at sun.security.util.SignatureFileVerifier.process(SignatureFileVerifier.java:176) в java.util.jar.JarVerifier.processEntry(JarVerifier.java:288) в java.util.jar.JarVerifier.update(JarVerifier.java:199) в java.util.jar.JarFile.initializeVerifier(JarFile.java:323) в 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) на java.net.URLClassLoader.defineClass(URLClassLoader.java:256) на java.net.URLClassLoader.access $000 (URLClassLoader.java:58) на java.net.URLClassLoader $1.run(URLClassLoader.java:197) в java.security.AccessController.doPrivileged(собственный метод) на java.net.URLClassLoader.findClass(URLClassLoader.java:190) в java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher $AppClassLoader.loadClass(Launcher.java:301) в 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>
Проблема связана с версией java. Я не заметил, что мой новый ide автоматически использует ibm java, когда я изменяю jre на sun java, он работает хорошо:)
SecurityException
появляется, потому что одна из ваших зависимостей - это подписанная банка.
Поскольку плагин с оттенком переупаковывает эту банку, он становится недействительным. → SecurityException
при запуске
Чтобы решить проблему, вы должны выровнять баны зависимости при их переупаковке. Это можно сделать, просто не перепаковывая файлы, которые делают банку подписанной, используя фильтр:
<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
Последняя строка stacktrace выше говорит
Не удалось найти основной класс: com.mainClass.
Возможно, опечатка в имени класса или классе не скомпилирована перед вызовом плагина?