做一个手动编译打包执行java类例子
首先进入zipCompressorByAnt 下面的操作都是在这个目录下进行的
目录结构如下,src里面存放了我们的java类,lib里是我们要用到的包,我们的目地是首先把java类编译成class文件放在当前class目录下并包含包路径,然后把class文件打成jar放在lib下
首先们要建一个class文件,javac编译的时候不会生成目录除了类中含有的包名目录外,然后用如下的命令就可以生成class文件,并放在我们指定的目录下
- javac -encoding utf-8 -Djava.ext.dirs=./lib -d class src/com/yan/compress/*.java
对上面的命令进行说明
-encoding utf-8 指定编码,如果不指定就以平台的编码为准
-Djava.ext.dirs=./lib 指定编译的时候调用的类
-d class 指定要生成到的目录
src/com/yan/compress/*.java 这就是具体要编译的类了,星号表示这个目录下的所有的java文件,如果在这个目录下有多个java文件,那么装分别生成class文件到指定目录
命令执行后就可以看到class目录中就有了我们编译过的类
第二步生成jar文件
- jar -cf lib/abc.jar class/com/yan/compress/ZipCompressorByAnt.class
对命令进行一个说明
-c 就是要生成jar包
-f后面跟指定的包名lib/abc.jar
class/com/yan/compress/ZipCompressorByAnt.class 类文件
命令执行后就可以看到在lib目录下多了一个abc.jar包
第三步就是执行这个类
- java -Djava.ext.dirs=./lib com.yan.compress.ZipCompressorByAnt 2013-08-04
-Djava.ext.dirs=./lib 指定要用到的包
com.yan.compress.ZipCompressorByAnt 带包名的类
2013-08-04 参数,如果需要参数的话就可以带参数
到这里一个手工编译类的例子就完成了,下面就对命令的一些细节进行一些扩展
如果在编译的时候想一下子编译多个类,并且这些类不在一个文件夹里怎么办
假设除了下面的要编译的类个还有在a/*.java b/*.java c/*.java 一些文件
其实也简单就看命令
- javac -encoding utf-8 -Djava.ext.dirs=./lib -d class src/com/yan/compress/*.java a/*.java b/*.java c/*.java
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
原文:http://ylq365.iteye.com/blog/1920757?utm_source=tuicool
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
总结:
javac -encoding utf-8 -Djava.ext.dirs=./lib -d class test/*.java
lib里存放需要的lib的jar包第一步:这里如果是当前目录的话可以是这样javac -encoding utf-8 -Djava.ext.dirs=./lib *.java
第二步:jar -cf lib/testspace.jar testspace.class
第三步运行:java -Djava.ext.dirs=./lib testspace
、
--------------------------------------------------------------------------------命令行编译java------------------------------------
假设有a.java的文件
package test;
publice class A{
public static void main(String[]args){
System.out.println("你好");
}
编译:javac a.java
会生成test文件夹和class类
执行java test/A