У меня есть проект Java со встроенным сервером причала и библиотекой трикотажа для служб REST. Я использую Intellij для запуска проекта и его работы. Проблема заключается в том, что я пытаюсь выполнить сгенерированный файл jar.Ошибка при выполнении сгенерированного файла jar
Итак, я написал задачу для создания файла jar в файле build.gradle. Ниже задача в build.gradle
task fatJar(type: Jar) {
baseName = project.name + '-all'
from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
with jar
manifest {
attributes 'Implementation-Title': 'Gradle Quickstart', 'Implementation-Version': 1.0
attributes 'Main-Class': 'EmbeddedJetty.EmbeddedJettyMain'
}
}
Файл баночка генерируется при запуске следующей команды
gradle clean build fatJar
я столкнулся ниже ошибки, когда я пытаюсь сгенерированный файл банку с помощью команда
java -jar projectname.rar
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:284)
at sun.security.util.SignatureFileVerifier.process(SignatureFileVerifier.java:238)
at java.util.jar.JarVerifier.processEntry(JarVerifier.java:273)
at java.util.jar.JarVerifier.update(JarVerifier.java:228)
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:940)
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:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:495)
Может кто-нибудь сообщить вам, что может быть проблемой?
Thats perfect. Это сработало. Спасибо – Maverick
Где добавить, чтобы добавить эту строку? В build.gradle? Я получаю синтаксическую ошибку при добавлении этого в build.gradle, вы можете вставить образец build.gradle с этой строкой. –
Arjun, директива exclude должна быть добавлена в конфигурацию плагина JAR в файле build.gradle. См. Документацию [JAR plugin documentation] (https://docs.gradle.org/3.5/dsl/org.gradle.api.tasks.bundling.Jar.html) в свойстве/методах исключения. Кроме того, [этот ответ] (http://stackoverflow.com/a/14441628/1772794) содержит простой пример. – dkichler