各位大哥,小弟写了个小程序,想打包成jar来运行,但运行起来总是错。
麻烦帮忙看下啊,感激不尽啊我是这么干的,自己写了个MANIFEST.MF放在程序目录下,程序结构如图:
ProjectName
   |-Src
      |-andy.fanancial.imagepanel
      |-andy.fanancial.login
      |-andy.fanancial.mainframe
      |-andy.fanancial.test
      |-andy.fanancial.user.dao
      |-jdbc.properties
      |-log4j.properties
      |-SqlMapConfig.xml
   |-images
   |-lib
   |-MANIFEST.MFMANIFEST.MF内容如下:Manifest-Version: 1.0
Class-Path: lib/commons-logging.jar lib/ibatis-2.3.0.677.jar lib/log4j-1.2.14.jar lib/mysql-connector-java-3.1.13-bin.jar
Main-Class: andy.fanancial.login.LoginForm包打好后,用7z看到引用的几个jar包都在打好的jar包里面了,但运行打好的jar包的时候还是报错:Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Logg
er
        at andy.fanancial.login.LoginForm.<clinit>(LoginForm.java:40)
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        ... 1 more
找不到log4j啊,这种肿么了,求指点。。

解决方案 »

  1.   

    补充一下,我是用Eclipse的File->Export->Jar File  这种方式来打Jar包的。。在jar manifest Specification这一页我是指定了自己写的这个manifest文件的啊。
      

  2.   

    你把项目相关的properties文件放在你打好的jar包相同的路径下试试看。
      

  3.   

    用fatjar吧,很好用的eclipse打包插件
      

  4.   

    使用第三方包的话,需要把第三方包合并到jar包里,或者单独放在外面,在mf文件里进行声明。
    切不可把第三方的jar包直接当作文件放在你的jar包内
      

  5.   

    在Eclipse或者Netbeans里面导出项目的jar文件,然后采用第三方的打包软件做成exe文件就能运行了
    推荐这款exe4j的免费小软件,网上搜一下。