java 程序 生成可执行文件exe ,运行出现java exception 错误提示框,解决方法思路

时间:2021-12-28 00:50:40
最近在写了mina框架的服务端,写完程序在Eclipse环境下运行均是正常的,然后按照之前写的博客  

windows环境下将java注册成为开机自启动服务

生成windows下可执行文件exe格式,按照以往,这样直接双击运行exe文件就可以了,但是这次出现java exception的错误对话框,那么这个问题怎么解决呢,经过一番思考,解决步骤如下:

1、在命令行下输入java -jar 1111.jar ,其中1111.jar即你按照之前步骤所生成的,注意此处运行命令一定要在1111.jar包所在目录下

2、运行在命令行中会出现错误提示,此处我把我的错误提示粘贴出来

Exception in thread "main" java.lang.SecurityException: invalid SHA1 signature f
ile digest for com/microsoft/sqlserver/jdbc/SQLServerException.class
at sun.security.util.SignatureFileVerifier.verifySection(SignatureFileVe
rifier.java:441)
at sun.security.util.SignatureFileVerifier.processImpl(SignatureFileVeri
fier.java:231)
at sun.security.util.SignatureFileVerifier.process(SignatureFileVerifier
.java:176)
at java.util.jar.JarVerifier.processEntry(JarVerifier.java:245)
at java.util.jar.JarVerifier.update(JarVerifier.java:199)
at java.util.jar.JarFile.initializeVerifier(JarFile.java:327)
at java.util.jar.JarFile.getInputStream(JarFile.java:395)
at sun.misc.URLClassPath$JarLoader$2.getInputStream(URLClassPath.java:69
2)
at sun.misc.Resource.cachedInputStream(Resource.java:61)
at sun.misc.Resource.getByteBuffer(Resource.java:144)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:256)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Could not find the main class: com.longertek.main.MainClass. Program will exit.

3、根据错误提示

Exception in thread "main" java.lang.SecurityException: invalid SHA1 signature f
ile digest for com/microsoft/sqlserver/jdbc/SQLServerException.class

这个地方时SQLServerException.class 报错,查看工程lib库,看到sqljdbc.jar这个库,使用这个库打包需要做操作处理的,此处我没有使用这个包,所以我删除之后重新打包生成exe,然后在运行,就没有问题了,如果有是用sqljdbc.jar这个库怎么办呢,网上搜了一个办法,再次贴出来:

1、把源sqljdbc.jar驱动解压到sqljdbc目录

2、删除 sqljdbc\META-INF\目录中出mainfest.mf,zigbert.rsa 以外的文件。

3、修改 sqljdbc\META-INF\目录中的mainfest.mf ,保留第一行,其余删除

4、重新打包:进入sqljdbc目录,执行:jar cvf sqljdbc.jar  .   注意这最后的一个点号不能掉(有空格)

5、将新打包的文件加入项目工程中即可。

 重新打包运行就ok了

此方法我没有测试哦,不知道可不可以,希望大家有这样测试的可以技术共享下哦~

好了,今天博客就写到这吧。