标签:
编译java工程一般直接用IDE或者用Ant、Maven之类的工具,很少有人用纯shell来编译java工程。正好遇到这样一个应该,用这篇博文做一下记录。这个可以采用eclipse自带的Export就可以导出jar了。但是为了软件自动化等巴拉巴拉的原因,采用存shell脚本编译。
如图所示,java project的名称为iec104,下面src是源文件目录,bin是所引用的jar包目录,现在要进行编译,并且打成jar,如果对jar有所了解,都知道jar有个MANIFEST.MF文件,iec104工程的MF文件内容如下:
Manifest-Version: 1.0 Main-Class: com.zzh.run.Iec104RecvRun意思就是制定了运行的main-class(有public static void main(String args[])的类)。
#!/bin/bash cur_dir=$(pwd) echo $cur_dir function do_compile_iec104(){ # echo $cur_dir iec104=$cur_dir/iec104 iec104_src=$cur_dir/iec104/src iec104_bin=$cur_dir/iec104/bin # echo $iec104_src # echo $iec104_bin iec104_class=$cur_dir/iec104/class # 将iec104的src目录下的所有java文件的名称存入到iec104/src/sources.list文件中 rm -rf $iec104_src/sources.list find $iec104_src -name "*.java" > $iec104_src/sources.list cat $iec104_src/sources.list # $iec104_class是存放编译的class文件的目录 rm -rf $iec104_class mkdir $iec104_class # 这里开始编译java文件,注意这里的-encoding utf-8,博主刚开始并没有加入这个,然后就报了一堆错误,纠结了很久才发现,这里给各位提个醒了。 javac -d $iec104_class -encoding utf-8 -classpath $iec104_bin/classes12.jar:$iec104_bin/junit-4.10.jar:$iec104_bin/log4j-1.2.17.jar:$iec104_bin/mysql-connector-java-5.0.5-bin.jar:$iec104_bin/RXTXcomm.jar -g -sourcepath $iec104_src @$iec104_src/sources.list # 由于用到了log4j,所以要将log4j的配置文件一并放入,如果没有用到,可以忽略这句 cp $iec104_src/log4j.properties $iec104_class # 如果原来在iec104目录下有jar报就删除掉,因为要生成新的 rm $iec104/iec104.jar # 这里要cd到存放class的目录,否则如果采用绝对路径编译,编译出来的jar包里面就是绝对路径了,这样就会有问题 # jar -cvfm $iec104/iec104.jar $iec104/MANIFEST.MF $iec104_class/*这样是错误的 cd $iec104_class jar -cvfm $iec104/iec104.jar $iec104/MANIFEST.MF * # 赋予可执行权限 sudo chmod a+x $iec104/iec104.jar } do_compile_iec104 exit 0运行这个脚本(linux下)就可以编译并且在iec104的目录下就可以看到iec104.jar文件了。
标签:
原文地址:http://blog.csdn.net/u013256816/article/details/50470583