導航:首頁 > 源碼編譯 > 腳本編譯

腳本編譯

發布時間:2022-01-22 15:57:18

A. 用shell腳本怎樣編譯java工程

用shell腳本怎樣編譯java工程


編譯java工程一般直接用IDE或者用Ant、Maven之類的工具,很少有人用純shell來編譯java工程。正好遇到這樣一個應該,用這篇博文做一下記錄。
案例:用eclipse寫了一個java project,然後編譯打成jar包。

這個可以採用eclipse自帶的Export就可以導出jar了。但是為了軟體自動化等巴拉巴拉的原因,採用存shell腳本編譯。

就是制定了運行的main-class(有public static void main(String args[])的類)。
將這個文件拷貝到iec104的根目錄下,然後執行腳本compile.sh,內容如下:

#!/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文件了。
這里補充下java命令的基本知識:
javac 用於編譯Java文件,格式為:
java [options] [sourcefiles] [@files]
其中:
options:命令行選項;
sourcefiles:一個或多個要編譯的源文件;
@files:一個或多個對源文件進行列表的文件,有時候要編譯的文件很多,一個個敲命令會顯得很長,也不方便修改,可以把要編譯的源文件列在文件中,在文件名前加@,這樣就可以對多個文件進行編譯,對編譯一個工程很有用,方便,省事。
有幾個比較重要的選項:
-d 用於指定編譯成的class文件的存放位置,預設情況下不指定class文件的存放目錄,編譯的class文件將和源文件在同一目錄下;
-classpath 可以簡寫成-cp,用於搜索編譯所需的class文件,指出編譯所用到的class文件的位置,如jar、zip或者其他包含class文件的目錄,指定該選項會覆蓋CLASSPATH的設定;
-sourcepath用於搜索編譯所需的源文件(即java文件),指定要搜索的源文件的位置,如jar、zip或其他包含java文件的目錄;
需要注意windows下和linux下文件路徑分隔符和文件列表(即-classpath和-sourcepath指定的文件)分隔符的區別:
windows下文件路徑分隔符用 ,文件列表分隔符用分號 ;
linux下文件路徑分隔符用 / ,文件列表分隔符用冒號 :

B. 如何使用shell腳本一鍵編譯

/可執行程序名
由於安全原因,PATH環境變數不包括當前目錄,因此要執行在當前目錄下的程

C. 自動編譯腳本怎麼寫

MOV DX, OFFSET MSG1
MOV AH, 9 ;9號功能調用,顯示提示.
INT 21H ;顯示.

MOV AH, 1 ;1號功能調用,鍵入、顯示.
INT 21H ;
CMP AL, '0'
JB ERR
CMP AL, '9'
JBE L1 ;小於等於9轉移.
ERR:
MOV DX, OFFSET MSG3
MOV AH, 9 ;9號功能調用,顯示提示.
INT 21H ;顯示.

JMP EXIT
;------------------------------
L1:

D. 如何把shell腳本編譯成二進制可執行腳本

你可以試試下面兩種方法
a. easy way: gzexe shell-name
b. gcc compile file

E. 如何編寫一個編譯程序的腳本

Linux中我們安裝軟體或者一些常用操作,都會接觸很多命令,有時在關鍵時刻往往因為忘了一些簡單的命令而苦惱,這時,我們不妨把命令寫成可執行的批量腳本,可以減少很多重復而又容易忘記的代碼,寫成一鍵腳本還有一個好處就是方便遷移,可以直接將寫好的sh文件在其他Linux平台運行。
格式:
文件後綴.sh
第一行代碼需要指定路徑來執行程序
#!/bin/sh
#!/bin/bash

一般一鍵腳本會要求用戶輸入各種選項:
#提示「請輸入姓名」並等待30秒,把用戶的輸入保存入變數name中
read -t 30 -p "請輸入用戶名稱:" name
echo -e "\n"
echo "用戶名為:$name"
#提示「請輸入密碼」並等待30秒,把用戶的輸入保存入變數age中,輸入內容隱藏
read -t 30 -s -p "請輸入用戶密碼:" age
echo -e "\n"
echo "用戶密碼為:$age"
#提示「請輸入性別」並等待30秒,把用戶的輸入保存入變數sex中,只接受一個字元輸入
read -t 30 -n 1 -p "請輸入用戶性別:" sex
echo -e "\n"
echo "性別為$sex"

F. 如何編譯腳本

首先要了解什麼是腳本? 腳本(Script),就是含有bind和alias等命令的集合,你可以把這個集合存為一個獨立的文件然後在需要的時候執行,這樣就可以方便你在CS中的使用。 腳本可以存為後綴名為.cfg的文件放在cstrike文件夾下,執行時在控制台輸入:exec (腳本文件名).cfg 即可。比如將一個腳本存為buys.cfg文件,則在控制台中輸入:exec buys.cfg則可以實現我們所需要的功能。要實現一個命令只要把這一過程定義(alias)好,並且分配一個鍵位給這個命令,以後只要按分配好的鍵位,就可以實現這一過程。所有的腳本都是通過這一方法實現的。 語句簡介: 1. alias語句是參數賦值用,語法為alias 參數名 "數值" 2. bind語句為綁定命令,就是把某個alias賦值的參數綁到某個鍵。具體的語法為bind "鍵名" "參數名" 3. "buy"相當於按下"b"鍵; "buyequip"相當於按下"o"鍵; "menuselect x"就是對應購買菜單的號碼。 舉兩個例子: * 你要買ak47,那你在開局時會按b-->4-->1, 對應的腳本就是buy; menuselect 4; menuselect 1;(中間用分號隔開) * 你要買手雷和1個閃光彈的話,那你在開局時會按o-->4,o-->3, 對應的腳本就是buyequip; menuselect 4; buyequip; menuselect 3; 注意bind鍵不能沖突,否則先bind的無效 什麼是bind? Bind就是分配一個命令到指定的鍵,它同樣能夠分配一個alias到指定的鍵。 比如:bind "mouse1" " attack" 表示分配 attack(攻擊)這個命令到指定的鍵mouse1(滑鼠左鍵) 什麼是alias? Alias就是給一組命令定義一個名稱,當你定義過後,CS就認為此alias為一個普通的命令,你可以用bind命令分配一個鍵給這個alias,也可以在其他的alias中使用它。 比如:alias hw "say Hello World!" 則當你在控制台(console)中輸入hw這條命令回車執行後,你就對伺服器里所有的玩家說了"Hello World!"這句話。 你還可以用bind命令:bind "v" "hw" 當你按過v鍵後,你同樣對伺服器里所有的玩家說了Hello World!這句話。 又比如: alias buym "buy;menuselect 3;menuselect 1" //(注:相當於b-3-1) alias buyv "buy;menuselect 8;menuselect 1" //(注:相當於b-8-1) alias buysay "buym;buyv;hw" //(注:組合定義到一起) bind j "buysay" //(注:組合再定義到J鍵) 則表示當你執行buysay命令(注:按J鍵即可)後,購買MP5和普通防彈衣,然後對伺服器里所有的玩家說Hello World!這句話。 此alias實現的方法為: 第一步執行buym命令,buym命令已經定義好為"打開購買菜單;選擇菜單第3項;再選擇菜單第1項",即實現了購買MP5的功能; 第二步執行buyv命令,buyv命令已經定義好為"打開購買菜單;選擇菜單第8項;再選擇菜單第1項",即實現了購買普通防彈衣的功能; 第三步執行之前已經定義好的hw命令:對伺服器里所有的玩家說Hello World!這句話。 把這三步命令定義為一個新的命令buysay,然後用bind命令分配一個鍵給這個新的命令,則當你按下j鍵後就實現了這三步命令的功能。 注意: alias語句在Half-Life Counter-Strike里不能超過259個字元即下面這行字元的長度(一般也超不到這里來的)

G. 腳本語言不需要編譯怎麼執行呀

因為大多數腳本都是解釋型語言。


H. 如何把VBS腳本編譯成可執行的EXE文件

如果你希望編譯後的EXE在不支持VBS的機器上執行,那可能非常麻煩,甚至一定時期內無法實現。

如果編譯的EXE還是在支持VBS的系統上執行,那就簡單了,你可以隨便選擇一個語言,比如DELPHI、C++、VB都可以,把VBS腳本內容寫在高級語言的源程序裡面,程序運行時在臨時文件夾建立一個VBS文件,然後調用它,運行完畢以後刪除腳本。

I. 腳本是用什麼語言編譯

編譯性語言:
在運行前需要將源代碼轉換為可執行代碼的語言。
例如:C, C++, Java, C#。

解釋性語言:

運行前不需要編譯,可直接由運行器程序直接執行的編程語言。
例如:PHP, Bash。

腳本語言:
解釋性語言中,用於執行簡單任務的語言。一般沒有 類 或者此類高級功能。
例如:Bash, Batch。

J. 腳本和編程代碼有什麼區別

區別如下:

1.性質不同

腳本指表演戲劇、拍攝電影等所依據的底本或書稿的底本。編程代碼就是程序員用開發工具所支持的語言寫出來的源文件,是一組由字元、符號或信號碼元以離散形式表示信息的明確的規則體系。

2.外文名不同

腳本外文名是script,編程代碼外文名是code。

3.范圍不同

腳本范圍指表演戲劇、曲藝,攝制電影等所依據的本子,編程代碼(也稱源程序)范圍是指一系列人類可讀的計算機語言指令。

閱讀全文

與腳本編譯相關的資料

熱點內容
有什麼辦法翻錄加密視頻 瀏覽:666
java數據結構與演算法面試題 瀏覽:977
解壓不了是什麼意思 瀏覽:359
紐西蘭編程師年薪 瀏覽:321
程序員為什麼大多生閨女 瀏覽:51
c編程用英文還是中文 瀏覽:723
一點都不解壓的游戲 瀏覽:203
解壓為什麼不能用中文文件夾 瀏覽:615
伺服器如何解除備份 瀏覽:144
安卓手機為什麼用一年就變卡 瀏覽:11
如何用風變編程自動回復 瀏覽:512
安卓閱讀幣怎麼樣 瀏覽:437
京東app怎麼切號 瀏覽:583
進入傳奇伺服器後如何修改 瀏覽:42
m0單片機的cycle怎麼知道 瀏覽:806
linux命令太長 瀏覽:782
壓縮機nb1111y是多少w 瀏覽:45
打賞視頻用什麼伺服器好 瀏覽:154
方舟好友伺服器怎麼加mod 瀏覽:982
javaresponse設置編碼 瀏覽:842