jar 出現了, 它其中之一的功能就是打包需要的 class, 製作出一個獨立的執行檔。
以下都在這個目錄操作這些指令。
descent@debian64:java$ pwd /home/descent/git/progs/java
manifest.txt 有很多參數, jar 執行檔需要 Main-Class 這個參數, 填上它吧。
當然要先把 *.class 透過 javac 編譯出來。
descent@debian64:java$ ls DescentPackage/*.class DescentPackage/HelloWorld.class DescentPackage/PrintString.class
# 產生 jar 執行檔 jar -cvmf manifest.txt h.jar DescentPackage/*.class # 執行這個 jar 執行檔 descent@debian64:java$ java -jar ./h.jar yy Hello World XX Hello World
在 linux 下直接執行這個 jar 執行檔。
apt-get install binfmt-support escent@debian64:java$ chmod 755 h.jar descent@debian64:java$ ./h.jar yy Hello World XX Hello World
在 windows 執行這個 jar 也是沒問題的 (fig 1)。
fig 1. 在 windows 7 執行在 linux 編譯的 jar 執行檔 |
如果你不信邪, 想試試在 DescentPackage 目錄產生 jar 執行檔, 會發現可以建立 hh.jar, 卻怎麼都無法執行。
descent@debian64:DescentPackage$ pwd /media/work/git/progs/java/DescentPackage descent@debian64:DescentPackage$ jar -cvmf manifest.txt hh.jar *.class added manifest adding: HelloWorld.class(in = 516) (out= 341)(deflated 33%) adding: PrintString.class(in = 419) (out= 292)(deflated 30%) descent@debian64:DescentPackage$ java -jar ./hh.jar Error: Could not find or load main class DescentPackage.HelloWorld descent@debian64:DescentPackage$ java -cp .. -jar ./hh.jar Error: Could not find or load main class DescentPackage.HelloWorld
先這樣, 我不想在搞這個了, 有夠煩。
ref:
How to run a jar file in a linux commandline
沒有留言:
張貼留言
使用 google 的 reCAPTCHA 驗證碼, 總算可以輕鬆留言了。
我實在受不了 spam 了, 又不想讓大家的眼睛花掉, 只好放棄匿名留言。這是沒辦法中的辦法了。留言的朋友需要有 google 帳號。