java經常使用命令行

一、javac(編譯java源文件)java

  javac是用來編譯.java文件的。linux

  例子:spring

  package com.fjassa.domain;  public class Human、public class Chinese extends Human   #Chinese繼承Humanwindows

  package com.fjassa.dao;  public class UserDao(private Human human)  #UserDao類持有Human成員dom

       如何編譯Human類、Chinese類?spa

    javac -d tbin src/com/fjassa/domain/Human.java  #編譯Human.java到tbin目錄下對象

              javac -d tbin src/com/fjassa/domain/Chinese.java  #報錯,找不到Human.class,爲何?咱們剛剛明明把Human編譯到tbin下面了,其實呢,javac編譯的時候是須要依賴jar包的,默認的classpath會自動記載${JAVA_HOME}/jar下的全部jar包。這就是咱們在使用jdk內置java對象的時候,不會報錯的緣由,若是須要編譯依賴spring包的類,那麼classpath須要指定所需spring的jar包                        繼承

    javac -classpath tbin/ -d tbin src/com/fjassa/domain/Chinese.java  #Ok編譯

              注意一點:在linux下classpath用:分割,在windows下用;分割class

              javac -classpath .:tbin/ -d tbin src/com/fjassa/domain/Chinese.java  #linux

         javac -classpath .;tbin/ -d tbin src/com/fjassa/domain/Chinese.java  #linux

       如何一次性編譯上述這些互相依賴的類?

             javac -d sbin/ src/com/fjassa/*/*   # -d表示編譯後存放的文件目錄,上述存在依賴關係,也就是說若是要編譯Chinese類必須先編譯Human,要編譯UserDao類必須編譯Human,因此一次性編譯這些類,讓javac本身去判斷依賴,若是單獨編譯一個Chinese.java,會報Human類未編譯錯誤。

二、java(運行java對象)

  運行編譯後的.class字節碼java對象。       

       java -Xmx500m -Dlog.dir=/tmp/zzz -classpath .:/tmp/java/libb com.fjsaas.demo

       java jar test.jar #classpath在jar包中的META-INF/MANIFEST.MF Class-Path屬性指定,-classpath指定無效,運行的java對象則由Main-Class屬性指定

  例子:

    cd tbin/下

       java -classpath . com.fjassa.dao.UserDao #運行成功

相關文章
相關標籤/搜索