此篇文章首先参考:
http://blog.csdn.net/lyhdream/article/details/17200445
我的java工程根目录为类容如下:
接下来我们删除掉.settings bin .classpath .project这些目录和文件,避免干扰
在src目录中有三个包
com.liyuanhong.ui
com.liyuanhong.ui.main.java
com.liyuanhong.ui.OperationWindow.java
com.liyuanhong.listener
com.liyuanhong.listener.ChooseFile.java
com.liyuanhong.listener.ConvertFile.java
com.liyuanhong.util
com.liyuanhong.util.ConverMethod.java
在org.json,目录中存放的是org.json.jar包
首先编译所有的源文件,进入到src目录,执行以下命令:
javac -classpath ..\org.json\org.json.jar com\liyuanhong\ui\*.java com\liyuanhong\listener\*.java com\liyuanhong\uti\*.java
编译好所有的原文件(原文件和相对应的class文件在同一目录)
接下来对所有的文件进行打包,注意:在eclipse打包的过程中,如果我们引用了外部包,我们打包的时候尽量使用Runnable JAR file打包,如果完全使用的是系统提供的库,使用Runnable JAR file 和 JAR file打包都可以.在eclipse打包的过程中,会自动将外部导入jar包解压,然后包含在所打的jar包中。(通过JAR file方式打包,会将外部用到的jar包含在我们导出的jar内,在运行的时候程序实际上是不认识jar包的,所以运行时会出错;而通过Runnable JAR file方式,会将外部引入的jar包解压后包含进导出的包内)
在我的工程里面实际上引入了org.json.jar的包
所以这里介绍两种方法来打包java工程:
方法一,包含外部jar包的包(这时我们要指明外部jar包的路径):
在src目录下创建manifest的文件(文件名可以任意指定),写入:
Main-Class: com.liyuanhong.ui.main
Class-Path:./org.json/org.json.jar (注意:冒号后有一空格)
Class-path为../org.json/org.json.jar 的原因是我们外部引用jar包的目录在上一目录的org.json目录下(当前是在src目录下),我们也可以把它放到src目录下,然后把Class-Path改为Class-Path: .(表示当前目录)
然后执行:
jar cvmf manifest test.jar com\liyuanhong\ui\*.class com\liyuanhong\listener\*.class com\liyuanhong\util\*.class
将会输出test.jar包,实际上test.jar包里面不包含org.json.jar包(这样我们运行的时候,必须有一org.json.jar包在test.jar包的上一目录的org.json目录里面,否则在运行当中会出错),用压缩软件打开test.jar包:
方法二,包含解压外部jar包的包:
首先解压org.json.jar包:
类文件都包含在org\json目录里,在src目录下创建一manifest文件,内容如下:
Main-Class: com.liyuanhong.ui.main (这里并不需要Class-path属性)
将org目录拷贝到src目录下,执行:
jar cvmf manifest test.jar com\liyuanhong\ui\*.class com\liyuanhong\listener\*.class com\liyuanhong\util\*.class org\json\*.class
这样就打好了有一个test.jar包,并且这个jar包并不依赖必须在某个目录下面包含org.json.jar包,
org.json.jar包的内容已经包含到test.jar里面了:
参考地址:
http://www.blogjava.net/gosyl/archive/2008/04/18/194107.html
实验java工程下载地址:
http://download.csdn.net/download/lyhdream/6679209