Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 执行生成的jar文件时出错_Java_Intellij Idea_Gradle_Executable Jar - Fatal编程技术网

Java 执行生成的jar文件时出错

Java 执行生成的jar文件时出错,java,intellij-idea,gradle,executable-jar,Java,Intellij Idea,Gradle,Executable Jar,我有一个Java项目,带有嵌入式jetty服务器和用于REST服务的jersey库。我正在使用Intellij来运行项目及其工作。 问题是当我试图执行生成的jar文件时 因此,我在build.gradle文件中编写了一个生成jar文件的任务。下面是build.gradle中的任务 task fatJar(type: Jar) { baseName = project.name + '-all' from { configurations.compile.collect { it.

我有一个Java项目,带有嵌入式jetty服务器和用于REST服务的jersey库。我正在使用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$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)

是否有人能就可能出现的问题提供您的反馈?

这可能是捆绑已签名以防止篡改的第三方库jar的结果。您的捆绑很可能包括来自这些JAR的签名文件在您的“fat”JAR清单中。可以使用如下指令明确排除签名文件:

排除'META-INF/*.RSA'、'META-INF/*.SF'、'META-INF/*.DSA'


相关问题:

您说您生成了jar文件,并且正在尝试使用java-jar运行一个.rar文件。

在哪里添加这一行?在建,格雷德尔?我在将此添加到build.gradle时遇到语法错误,您能用这一行粘贴一个示例build.gradle吗。Arjun,需要将exclude指令添加到build.gradle文件中的JAR插件配置中。请参见“排除”属性/方法上的。此外,还包括一个简单的示例。