當前位置:編程學習大全網 - 源碼下載 - javac和java 有什麽區別和聯系?

javac和java 有什麽區別和聯系?

javac和java命令行中的-classpath選項

這是個很基礎的問題,但是因為基本上都是用現有的IDE工具 來開發java程序,所以很少有人意識到這壹點。

javac

-classpath,設定要搜索類的路徑,可以是目錄,jar文件,zip文件(裏面都是class文件),會覆蓋掉所有在CLASSPATH裏面的設定。

-sourcepath, 設定要搜索編譯所需java 文件的路徑,可以是目錄,jar文件,zip文件(裏面都是java文件)。

所以壹個完整的javac命令行應該是這樣的,

假設abc.java在路徑c:\src裏面,在任何的目錄的都可以執行以下命令來編譯。

javac -classpath c:\classes;c:\jar\abc.jar;c:\zip\abc.zip -sourcepath c:\source\project1\src;c:\source\project2 \lib\src.jar;c:\source\project3\lib\src.zip c:\src\abc.java

表示編譯需要c:\classed下面的class文件,c:\jar\abc.jar裏面的class文件,c:\zip\abc.zip裏面的class文件

還需要c:\source\project1\src下面的源文件,c:\source\project2 \lib\src.jar裏面的源文件,c:\source\project3\lib\src.zip裏面的源文件,

註意:jar,zip裏面的源文件不會有什麽改動,目錄下的源文件,有可能會被重新編譯。

java

-classpath, 設定要搜索的類的路徑,可以是目錄,jar文件,zip文件(裏面都是class文件),會覆蓋掉所有的CLASSPATH的設定。

由於所要執行的類也是要搜索的類的壹部分,所以壹定要把這個類的路徑也放到-classpath的設置裏面。

表現在,在要執行的類的路徑裏面執行java時,壹定要添加上點號(.)標示本目錄也要搜索。

假設abc.class在路徑c:\src裏面

可以在任何路徑下執行以下命令

java -classpath c:\classes;c:\jar\abc.jar;c:\zip\abc.zip;c:\src abc

問題:如果main.class屬於c:\jar\abc.jar,並且在com.cnblogs.jeffchen這個包裏,那麽執行java -classpath c:\classes;c:\jar\abc.jar;c:\zip\abc.zip;com.cnblogs.jeffchen.main即可, 但是如果classpath中包含多個jar包呢?並且其他jar包中也有com.cnblogs.jeffchen會發生什麽情況?錯誤?

在windows下,

文件路徑的分割符為反斜杠 \

類或者java文件列表的分割符為分號 ;

在linux下

文件路徑的分隔符位斜杠 /

類或者java文件列表的分隔符為冒號 :

壹個linux下編譯和運行的例子

/usr/local/java/bin/javac -classpath /tmp/javatest/lib/mail-1.3.3.jar -d /tmp/javatest/bin/ /tmp/javatest/src/jp/co/realseed/Capability.java

/usr/local/java/bin/java -classpath /tmp/javatest/lib/mail-1.3.3.jar:/tmp/javatest/bin/ jp.co.realseed.Capability

  • 上一篇:微信小程序如何獲取用戶信息
  • 下一篇:新手如何入門編程?
  • copyright 2024編程學習大全網