使用Jbuilder引用外部jar包制作的jar文件,运行时的问题

原创 2007年09月30日 13:07:00

我做了一个项目,从外部应用了不少jar包,用Jbuilder 2006运行时正常,但是制作为jar文件以后,运行java -jar xxx.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(SignatureFileVe
rifier.java:377)
        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:234)
        at java.util.jar.JarVerifier.update(JarVerifier.java:188)
        at java.util.jar.JarFile.initializeVerifier(JarFile.java:321)
        at java.util.jar.JarFile.getInputStream(JarFile.java:386)
        at sun.misc.JarIndex.getJarIndex(JarIndex.java:99)
        at sun.misc.URLClassPath$JarLoader$1.run(URLClassPath.java:606)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.misc.URLClassPath$JarLoader.ensureOpen(URLClassPath.java:597)
        at sun.misc.URLClassPath$JarLoader.<init>(URLClassPath.java:581)
        at sun.misc.URLClassPath$3.run(URLClassPath.java:331)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.misc.URLClassPath.getLoader(URLClassPath.java:320)
        at sun.misc.URLClassPath.getLoader(URLClassPath.java:297)
        at sun.misc.URLClassPath.getResource(URLClassPath.java:167)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:192)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)

后来上网搜索,发现很多使用Jbuilder从外部引用jar包在制作jar文件时候都有这个问题。大概的原因应该是外部jar包有签名,制作成新的jar文件以后没法通过验证,这似乎是Jbuilder的问题(不确定)。

网上有一些解决办法,比如把要导入的jar包放进JBuilder的jdk库,然后让JBuilder重新扫描一次,不过这个方法我没有成功,估计是MAINFEST.MF文件里面的路径问题吧,总是提示找不到import的东西,我尝试过几次没有解决。

另一个方法是在JBuilder制作jar文件的设置时不选择生成MAINFEST文件,这个方法我也没成功。

最后拼死一搏了,前面不是MAINFEST.MF文件路径不对吗,那我仍然从外部导入jar包,仍然生成MAINFEST文件。生成好以后用WINRAR打开,发现META-INF里面有很多文件文件夹,我也不知道是做啥用的,干脆除了MAINFEST.MF其他文件文件夹都删除。删除完毕以后执行java -jar xxx.jar命令,居然成功了。估计删除的那几个文件可能就是验证用的,但是JBuilder生成的时候不完整,所以验证了,但不成功。现在不用验证了,而且jar包都变成了.class文件和我写的程序在同一级,所以MAINFEST.MF文件不用修改路径也可以直接找到了

 网上似乎不仅仅是Jbuilder2006有这个问题,从9开始往后我见到有不少人都提出这样的问题了

Invalid signature file digest for Manifest main attributes

[root@hadoop11 yuhui]# /spark/bin/spark-submit --class com.yh.staticlog.parquetLog LogAnalysis-1.0-f...
  • silentwolfyh
  • silentwolfyh
  • 2016年06月08日 16:03
  • 1604

Spark IM插件(Sparkplug)开发环境搭建

最近使用Openfire和Spark做一个即时通讯客户端,想着自己能够做一个群聊的插件,所以需要自己去搭建环境,下面记录一下步骤以及遇到错误的解决办法(官网有点坑)。 准备工作 Sparkplug K...
  • changqing5818
  • changqing5818
  • 2015年10月22日 16:36
  • 1136

idea导出可执行jar包

以下以hello world程序为例,图示打包过程。
  • aotian16
  • aotian16
  • 2016年08月13日 11:23
  • 8357

【HTML5最容易犯的错】HTML5的section可不要作为div的替代品

人们在标签使用中最常见到的错误之一就是随意将HTML5的等价于——具体地说,就是直接用作替代品(用于样式)。在XHTML或者HTML4中,我们常看到这样的代码:...
  • kgsew
  • kgsew
  • 2014年07月18日 15:51
  • 2205

eclipse生成jar包(各种问题集合解决)

今天上午在用eclipse生成jar包时,搞了许久都没有成功,原因是我的工程引用了其他的jar包,最后查了许多资料终于解决了,现在将解决方案列在下面仅供参考: 第一:普通类导出jar包,我说的普通类...
  • lychbeyond
  • lychbeyond
  • 2014年12月23日 20:44
  • 2402

Eclipse将引用了第三方jar包的Java项目打包成jar文件的两种方法

Eclipse导入第三方jar包的两种方法
  • guoguo527
  • guoguo527
  • 2016年09月13日 16:29
  • 628

IntelliJ 导出jar包方法及部分问题解决

1、打开File-->Project Structure-->Artifacts 点击组哟侧窗口的“+”,添加我们要打包的moudle 2、点击右侧窗口的“+”,添加jar依赖和文件等 ...
  • xlyrh
  • xlyrh
  • 2016年12月28日 17:42
  • 1673

IDEA如何打包可运行jar,外部引用jar包版

背景: 有时候,我们会用IDEA来开发一些小工具,需要打成可运行的JAR包;或者某些项目不是WEB应用,纯粹是后台应用,发布时,也需要打成可运行的JAR包。并且,如果依赖第三方jar时,又不希望...
  • dufufd
  • dufufd
  • 2017年05月03日 17:00
  • 3744

java 引入jar包机制

今天研究了下java的引入jar包机制: javase项目中:引入sqljdbc4.jar 直接windows资源管理器文件夹下复制这个jar包到项目中是不能用的,需要采用在项目中引入的方式: 1.右...
  • wuer0520
  • wuer0520
  • 2013年12月18日 17:05
  • 1745

使用IDEA导出可运行的jar包,包含引用第三方jar包

IDEA版本:IDEA 14 这里我使用的是数据库的JDBC jar包导出案例。 1.创建一个Module,名称为dataBase,在里面我们先创建一个folder用来包含所需要的jar包 2.从...
  • qi_yue_yu
  • qi_yue_yu
  • 2016年09月22日 21:47
  • 4321
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用Jbuilder引用外部jar包制作的jar文件,运行时的问题
举报原因:
原因补充:

(最多只允许输入30个字)