"package中的javac,java用法" && "製作可執行jar檔案"

來源:互聯網
上載者:User
執行
java初學者最早會用的命令無非是就是javac和java,但即使這麼簡單命令也還會把我們弄得頭皮發麻 -__- .Roger下面就"package中的javac,java用法"和"製作可執行jar檔案"做點簡單的解釋。

最基礎的東西就不廢話了,至於package先講講我的理解,因為我覺得知道這點對於開發還是很有協助的。舉個例子說:有兩個類Tom和Jerry同屬於一個package--Partners

//Tom.javapackage Partners;public class Tom{       public String toString()      {               return "It's Tom";      }}

//Jerry.javapackage Partners;public class Jerry{     public static void main(String[] args)     {            tom = new Tom();           System.out.println(tom + " and I am Jerry.");    }}

下面Roger要編譯它們為位元組碼了,@_@,可用如下命令:Tom先,這很明顯,而且必須:javac Tom.java 或 javac -d .\Partners Tom.java

(這裡應該先設好path,如Roger機子上就是C:\j2sdk1.4.2\bin,因為javac.exe和java.exe都在這個目錄下,它們可是javac和java的源泉;同理classpath也要設好了,Roger的機子上是.,C:\j2sdk1.4.2\lib\dt.jar和C:\j2sdk1.4.2\lib\tools.jar...,tools.jar是jar命令的源泉,不過除了.,其他兩個都是預設的,不設也行;如果有其他的東東也要設上去,如機子上裝了tomcat就應該加上Tomcat 5.0\common\lib下的jar檔案,反正第三方類庫都加上去,以便jvm找到著.如果用eclipse就要在eclipse裡也設一下tomcat,這個以後在說吧.)

這兩條命令的區別在於後者執行完後在目前的目錄下產生一個Partners檔案夾,裡面有產生的Tom.class. -d 表示指定在哪個目錄下產生class檔案,即使寫一長竄嵌套的之前沒有的目錄,命令執行完之後也會產生的,這點不用擔心的。至於前者執行完之後,還要人工建立一個Partners檔案夾,並把Tom.class移進去。為什麼一定要這個Partners檔案夾呢?這就看你對package的理解了。我們知道這裡Tom的全稱是Partners.Tom,而jvm在處理它時把它轉化為Partners\Tom或Partners/Tom(看不同的system了)。當你要運行它時,就應該在Partners檔案夾上一層目錄用以下命令:java Partners.Tom。(在Partners目錄下用這個命令不行的:java Tom,不然會出現一個error說類名找不到,只有Partners\Tom這個類名)於是jvm會循著這個線索對目錄層層解析才能找到Tom.class並執行它.如果你的package更長點也一樣,比如:com.blogdriver.bubbletea, 不信就試試吧.Jerry也是一樣的道理.所有工作結束之後,我們有以下目錄結構:

.--Partners    --Tom.class    --Jerry.class

看到這裡肯定有老兄會說為什麼要這麼複雜,乾脆不要用package算了。package還是有很多好處的,主要是使類之間的訪問有了限制,便於控制和管理。舉個例子,在develop和production版本之間進行控制就很有好處了,當然如果你用eclipse之類的IDE的話,就用不著上面這麼複雜了,按下Run按鈕就行了。

下面要把它們打成可執行檔jar檔案.先自己動手建立一個.mf檔案,裡面寫"Main-Class: Partners.Jerry\n",之後的目錄結構如下:.--Partners    --Tom.class    --Jerry.class--MANIFEST.mf

MANIFEST相當於一個貨單,裡面存了諸如執行的主類是哪個等資訊,取其他名字也行。

然後運行下面命令: jar cvfm test.jar MANIFEST.mf Partners(至於cvfm是什麼就看這個吧:jar -help,help很有用的啊)這其實是個壓縮的過程.之後就產生可執行檔jar檔案了,如果是applet之類的檔案雙擊即可執行,而本例雙擊之後結果很快顯現並消失了,正常的人眼估計是看不到了,就用下面命令吧:java -jar test.jar.看到結果了吧.下面Roger再給一個applet的例子,按照上面步驟弄一下,雙擊jar檔案就可以看到很明顯的結果了.

import javax.swing.*;import java.awt.*;public class myApplet extends JApplet {  public void init() {    getContentPane().add(new JLabel("Applet!"));  }   public static void main(String[] args) {    JApplet applet = new myApplet();    JFrame frame = new JFrame("Applet");        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    frame.getContentPane().add(applet);    frame.setSize(100,50);    applet.init();    applet.start();    frame.setVisible(true);  }}

命令如下:javac myapplet.javajar cvfm test2.jar ANOTHERMF.mf myApplet.class

注意這樣做一定要有main函數,有的applet沒有的就自己加一個吧,跟上面的例子差不多,主要是JApplet.init()和JApplet.start()方法.jar的其他用法就不用Roger說了吧,自己用-help看看就知道了.




相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。