IntelliJ Jar Ошибка: неверный дайджест файла подписи для основных атрибутов манифеста - PullRequest
0 голосов
/ 27 сентября 2018

Я использую IntelliJ IDE в armx64 linux-based системе, где я работаю над non-maven Java-проектом, который имеет много модулей (зависимостей)) связано с этим.При запуске моего проекта из IDE все работает нормально, однако при сборке его в исполняемый файл JAR и попытке запустить JAR из терминала, используя java -jar myjar.jar, я получил следующую ошибку:

Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.SecurityException: Invalid signature file digest for Manifest main attributes
    at sun.security.util.SignatureFileVerifier.processImpl(SignatureFileVerifier.java:330)
    at sun.security.util.SignatureFileVerifier.process(SignatureFileVerifier.java:263)
    at java.util.jar.JarVerifier.processEntry(JarVerifier.java:318)
    at java.util.jar.JarVerifier.update(JarVerifier.java:230)
    at java.util.jar.JarFile.initializeVerifier(JarFile.java:383)
    at java.util.jar.JarFile.getInputStream(JarFile.java:450)
    at sun.misc.URLClassPath$JarLoader$2.getInputStream(URLClassPath.java:977)
    at sun.misc.Resource.cachedInputStream(Resource.java:77)
    at sun.misc.Resource.getByteBuffer(Resource.java:160)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:454)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:495)

В настоящее время я использую OpenJdk-1.8, вместо этого я попытался использовать Oracle JDK v1.8 для сборки, а затем перезапустить файл jar, но все еще сталкивался с той же ошибкой.Я также попытался создать новое простое приложение «Hello world» и экспортировать для него соответствующий jar-файл, где он успешно работает без ошибок.

Вот моя внутренняя структура jar и соответствующий файл манифеста: скриншот структуры баночки

1 Ответ

0 голосов
/ 27 сентября 2018

Спасибо за @y.bedrov, который связался с этой проблемой , которая помогла мне решить эту ошибку, включая следующее:

"sqljdbc4.jar" был подписанным JAR во внешних библиотеках OP.Таким образом, следующий подход к систематическому исключению файлов, связанных с сигнатурами, таких как .SF, .RSA или .DES или другие файлы алгоритмов, является правильным способом продвижения вперед.

И да, я также использую "sqljdbc4.jar ", поэтому после прочтения ответа я решил решить эту проблему, удалив файлы сигнатур из папки Meta-inf внутри моего jar-файла.

...