Файл JAR артефакта IntelliJ: не удалось найти или загрузить основной класс - PullRequest
0 голосов
/ 27 февраля 2019

Я создал артефакт JAR в IntelliJ с возможностью извлечения файлов JAR в целевой JAR.Выглядит так:

enter image description here

Я правильно заполнил информацию в манифесте:

enter image description here

Я проверил содержимое файла JAR с помощью ZIP, и он содержит файлы JAR, правильно заполненные файлы MANIFEST.MF и .class для моего проекта.

Но если я попытаюсь запустить его, онсбрасывает ошибку:

d:\Own_Tools\REF_Standalone\build>java -jar REF_Standalone.jar
Error: Could not find or load main class com.continental.ref.REFController

Я почти уверен, что он содержит com \ continental \ ref \ REFController.class.

У вас есть идеи, что с ним не так?

Спасибо: Левенте

1 Ответ

0 голосов
/ 28 февраля 2019

apache-commons.jar имеет цифровую подпись (вы можете узнать это по FILETEST.DSA и FILETEST.SF в каталоге META-INF).

Когда упакован файл с артефактом, эти файлы копируются вновый jar, но они не содержат подписей других классов в вашем новом jar.

Это нарушает подпись jar, и JVM не позволяет выполнить jar по соображениям безопасности.

См. мой другой ответ для обходного пути (просто удалите файлы *.SF и *.DSA из apache-commons.jar и восстановите артефакт).

...