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

我在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文件运行则可以正常运行,怀疑是否是和使用了数据库有关,求大神帮忙

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

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

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

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

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

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

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

打开注册表项,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。