各位大哥,小弟写了个小程序,想打包成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.MF
MANIFEST.MF内容如下:
- Java code
Manifest-Version: 1.0Class-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.jarMain-Class: andy.fanancial.login.LoginForm
包打好后,用7z看到引用的几个jar包都在打好的jar包里面了,但运行打好的jar包的时候还是报错:
- Java code
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Logger 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啊,这种肿么了,求指点。。
------解决方案--------------------
你把项目相关的properties文件放在你打好的jar包相同的路径下试试看。
------解决方案--------------------
MANIFEST.MF放错地方了吧.
------解决方案--------------------
路径里面有中文?
------解决方案--------------------
用fatjar吧,很好用的eclipse打包插件
------解决方案--------------------
使用第三方包的话,需要把第三方包合并到jar包里,或者单独放在外面,在mf文件里进行声明。
切不可把第三方的jar包直接当作文件放在你的jar包内
------解决方案--------------------
在Eclipse或者Netbeans里面导出项目的jar文件,然后采用第三方的打包软件做成exe文件就能运行了。。。
推荐这款exe4j的免费小软件,网上搜一下。