這個可以采用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文件了。