使用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开始往后我见到有不少人都提出这样的问题了

相关文章推荐

在Eclipse中建立第一个Servlet程序

本文转自:http://kin111.blog.51cto.com/738881/163354 继上篇在Eclipse中搭好了tomcat环境后,我们建立一个最简单的servlet程序,这个serve...
  • njchenyi
  • njchenyi
  • 2010年11月29日 14:38
  • 73925

java用命令行编译运行时带有包和使用外部jar包的情况

命令行编译运行Java程序时,加载指定目录中的Jar包: 解决方案一: [java] view plain copy     编译:jav...

Jsp前台提交中文乱码问题解决方案(Tomcat项目运行时,加载jar包或类文件的顺序)

众所周知,在我们javaWeb下项目中常常会实现前后台交互,而前后台交互最常见的问题就是中文乱码问题,下面我总结出四种中文乱码解决方案:前提:前台页面必须以post方式提交中文 —因为post会设置h...

Hadoop JAR包运行时权限不够的问题

错误信息如下: 13/11/10 22:19:09 INFO mapred.JobClient: Task Id : attempt_201311102206_0004_m_000002_0...

Android工程导入外部jar包时遇到的问题自动生成APK文件

添加一个外部的jar包到我们的工程时有时会出现 [2014-02-28 17:19:00 - Dex Loader] Unable to execute dex: Java heap space [2...

Java获取Jar或者War文件运行时的绝对路径

Java获取Jar或者War文件运行时的绝对路径,getRunningPath需要一个当前程序使用的Java类的class属性参数,它可以返回打包过的 Java可执行文件(jar,war)所处的系统目...

war、jar包的打包方法,命令行方式和使用jbuilder或者eclipse

1.概念 war包:是做好一个web应用后,通常是网站,打成包部署到容器中。 jar包:通常是开发时要引用通用类,打成包便于存放管理。 ear包:企业级应用,通常是EJB打成ear包。 所有的...
  • hhf1029
  • hhf1029
  • 2012年08月19日 23:01
  • 767

Runable Jar File执行时引用外部包问题

大家都知道一个java应用项目可以打包成一个jar,当然你必须指定一个拥有main函数的main class作为你这个jar包的程序入口。   具体的方法是修改jar包内目录META-IN...
  • memray
  • memray
  • 2012年07月21日 21:26
  • 1771

Apache Ant运行时Unable to locate tools.jar解决方法 (ionic 配置 ant 的时候出现这个问题也可按照下边方法解决)

下载Apache Ant 一、解压ant安装包在D:\ant下 二、环境变量配置 ANT_HOME D:\ant\apache-ant-1.9.0 CLASSPATH ;%ANT_HOME%...

java中的jar打包成可执行文件,可以避免在linux中的java程序运行时内存剧增现象

java类打包成.jar可执行文件 原因: 发现在windows中运行好好的java程序,一迁移到linux环境下就发现程序运行时,内存会不断增加,直到被系统killed.所以我排除出内存...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用Jbuilder引用外部jar包制作的jar文件,运行时的问题
举报原因:
原因补充:

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