执行生成的jar文件出错
Error in executing the generated jar file
我有一个 Java 项目,其中包含用于 REST 服务的嵌入式码头服务器和球衣库。我正在使用 Intellij 运行 宁项目和它的工作。
问题是当我尝试执行生成的 jar 文件时。
所以我在build.gradle文件中写了生成jar文件的任务。下面是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'
}
}
jar文件是在我运行下面的命令
时生成的
gradle clean build fatJar
当我尝试使用命令
生成的 jar 文件时,我遇到了以下错误
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.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.access0(URLClassLoader.java:73)
at java.net.URLClassLoader.run(URLClassLoader.java:368)
at java.net.URLClassLoader.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)
有人可以就可能出现的问题提供反馈吗?
这可能是捆绑了已签名以防止篡改的第三方库 jar 的结果。您的捆绑包可能在 'fat' 罐子清单中包含来自这些罐子的签名文件。您可以使用如下指令明确排除签名文件:
exclude 'META-INF/*.RSA', 'META-INF/*.SF','META-INF/*.DSA'
相关问题:"Invalid signature file" when attempting to run a .jar
你说你生成了 jar 文件,你正在尝试 运行 使用 java -jar.
一个 .rar 文件
我有一个 Java 项目,其中包含用于 REST 服务的嵌入式码头服务器和球衣库。我正在使用 Intellij 运行 宁项目和它的工作。 问题是当我尝试执行生成的 jar 文件时。
所以我在build.gradle文件中写了生成jar文件的任务。下面是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'
}
}
jar文件是在我运行下面的命令
时生成的gradle clean build fatJar
当我尝试使用命令
生成的 jar 文件时,我遇到了以下错误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.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.access0(URLClassLoader.java:73)
at java.net.URLClassLoader.run(URLClassLoader.java:368)
at java.net.URLClassLoader.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)
有人可以就可能出现的问题提供反馈吗?
这可能是捆绑了已签名以防止篡改的第三方库 jar 的结果。您的捆绑包可能在 'fat' 罐子清单中包含来自这些罐子的签名文件。您可以使用如下指令明确排除签名文件:
exclude 'META-INF/*.RSA', 'META-INF/*.SF','META-INF/*.DSA'
相关问题:"Invalid signature file" when attempting to run a .jar
你说你生成了 jar 文件,你正在尝试 运行 使用 java -jar.
一个 .rar 文件