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