关于jar包运行提示错误的问题 20C

我在cmd上运行刚刚导出的jar包 ,程序是java写的一个桌面软件,但是出现错误如下:
D:>java -jar work_space.jar
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:316)
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.JarIndex.getJarIndex(JarIndex.java:137)
at sun.misc.URLClassPath$JarLoader$1.run(URLClassPath.java:839)
at sun.misc.URLClassPath$JarLoader$1.run(URLClassPath.java:831)
at java.security.AccessController.doPrivileged(Native Method)
at sun.misc.URLClassPath$JarLoader.ensureOpen(URLClassPath.java:830)
at sun.misc.URLClassPath$JarLoader.(URLClassPath.java:803)
at sun.misc.URLClassPath$3.run(URLClassPath.java:530)
at sun.misc.URLClassPath$3.run(URLClassPath.java:520)
at java.security.AccessController.doPrivileged(Native Method)
at sun.misc.URLClassPath.getLoader(URLClassPath.java:519)
at sun.misc.URLClassPath.getLoader(URLClassPath.java:492)
at sun.misc.URLClassPath.getNextLoader(URLClassPath.java:457)
at sun.misc.URLClassPath.getResource(URLClassPath.java:211)
at java.net.URLClassLoader$1.run(URLClassLoader.java:365)
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)
图片说明
已经在网络上尝试删除DSA、RSA、SF等文件,但是一直出现如上的提示,以为是自己的导出方式有问题,但是使用其他程序的jar文件运行则可以正常运行,怀疑是否是和使用了数据库有关,求大神帮忙

7个回答

1.第一种解决:导入jcommander-1.48.jar包后运行.
下载路径为:http://download.csdn.net/detail/u010340178/9782044
2.创建项目的时候,选择JRE时要选择第二个,选择第一个就会报这样的错误。

qq_42761716
qq_42761716 1.第一种解决:导入jcommander-1.48.jar包后运行. 下载路径为:http://download.csdn.net/detail/u010340178/97820442.创建项目的时候,选择JRE时要选择第二个,选择第一个就会报这样的错误。
大约 2 年之前 回复
qq_28930013
qq_28930013 回复weixin_42758070: ??
大约 2 年之前 回复
weixin_42758070
倩在大唐 nxgg
大约 2 年之前 回复
qq_28930013
qq_28930013 第二个方式我没太看明白,请问选择第二个JRE是什么意思啊
大约 2 年之前 回复
qq_28930013
qq_28930013 我已经导入了jcommander-1.48.jar包,但是还是报这个错误
大约 2 年之前 回复

程序运行需要的jar包有放在同一目录或者代码中指定的路径下吗?

qq_28930013
qq_28930013 并没有放入同一个目录,我是用idea导出的,所使用的的jar包在提问里面的图片中需要改一下吗?
大约 2 年之前 回复

是你自己导出来的jar文件吗? 是不是使用了数字签名?

qq_28930013
qq_28930013 是自己导出来的
大约 2 年之前 回复

设置将.class文件所在路径设置为classpath环境变量即可。

D:>set classpath=D:
D:>java Test
This is a test program!

qq_28930013
qq_28930013 请问可以说的具体一点吗 我还是个小白 不太明白怎么弄 谢谢
大约 2 年之前 回复

导入jcommander-1.48.jar包后运行.

在软甲里面运行成功没有?

ws_tan
一只努力飞翔的鱼 回复qq_28930013: 你能把你的工程目录和导出后的jar包目录分别截图看一下吗?
大约 2 年之前 回复
qq_28930013
qq_28930013 运行成功了
大约 2 年之前 回复

打开注册表项,HKEY_CLASSES_ROOT\Applications\java.exe\shell\open\command, 修改数据为"C:\Program Files\Java\jre6\bin\java.exe" -jar "%1",即增加了参数-jar

或者直接导入下列注册表文件

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Applications\java.exe\shell\open\command]
@="\"C:\Program Files\Java\jre6\bin\java.exe\" -jar \"%1\""

注意:

若双击打开jar包使用的是javaw,则需要修改javaw对应的注册表项。

java与javaw区别如下:

如果是基于纯文本的编成用java。
如果是图形化但随时打印成纯文本用java。
如果你在检查错误,用java。
如果程序是纯粹的图形化的,而且你需要提升速度,用javaw。

qq_28930013
qq_28930013 修改之后还是不行啊...
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问