程序有效,但由于签名文件,jar无法启动

时间:2013-06-18 16:22:42

标签: java jar manifest

我的程序在IDE上编译后工作正常,但是当我尝试运行创建的.jar时,我收到以下错误:

java -jar /Users/bigbitecode/Documents/workspace/sys\ client_b/sys-client/out/artifacts/sys_client_jar/sys-client.jar 
Exception in thread "main" java.lang.SecurityException: no manifiest section for signature file entry com/sun/java/help/impl/TagProperties.class
    at sun.security.util.SignatureFileVerifier.verifySection(SignatureFileVerifier.java:399)
    at sun.security.util.SignatureFileVerifier.processImpl(SignatureFileVerifier.java:250)
    at sun.security.util.SignatureFileVerifier.process(SignatureFileVerifier.java:193)
    at java.util.jar.JarVerifier.processEntry(JarVerifier.java:305)
    at java.util.jar.JarVerifier.update(JarVerifier.java:216)
    at java.util.jar.JarFile.initializeVerifier(JarFile.java:345)
    at java.util.jar.JarFile.getInputStream(JarFile.java:412)
    at sun.misc.JarIndex.getJarIndex(JarIndex.java:137)
    at sun.misc.URLClassPath$JarLoader$1.run(URLClassPath.java:668)
    at sun.misc.URLClassPath$JarLoader$1.run(URLClassPath.java:660)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.misc.URLClassPath$JarLoader.ensureOpen(URLClassPath.java:659)
    at sun.misc.URLClassPath$JarLoader.<init>(URLClassPath.java:632)
    at sun.misc.URLClassPath$3.run(URLClassPath.java:362)
    at sun.misc.URLClassPath$3.run(URLClassPath.java:352)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.misc.URLClassPath.getLoader(URLClassPath.java:351)
    at sun.misc.URLClassPath.getLoader(URLClassPath.java:328)
    at sun.misc.URLClassPath.getResource(URLClassPath.java:194)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:358)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)

我已经阅读了几个类似的问题,这似乎是由于我使用的一个令人讨厌的jar作为依赖,但我不知道哪一个或如何找到它。但是,一旦我这样做,我该怎么把它从罐子里排除?

它会成为智能的原因吗?是否可以通过终端构建jar?

编辑:   - 我做了一个jar -tf sys-client.jar,它显示了所有文件,包括清单   - 目前我的清单有以下内容:

Manifest-Version: 1.0
Main-Class: SysClient.data.gui.SysClient

1 个答案:

答案 0 :(得分:0)

是的,你可以使用jar命令从终端构建一个jar文件。请参阅此文档:

http://docs.oracle.com/javase/tutorial/deployment/jar/build.html

确保正确设置了清单。创建jar后,运行jar -tf并检查是否存在所有类和清单文件。

它是智能的原因:看起来你的jar没有正确捆绑。如果需要,可以先使用jar -tf jar-fileName.jar验证jar文件的内容是否正确