国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

命令行編譯java的一點總結

2019-11-14 22:38:09
字體:
來源:轉載
供稿:網友
命令行編譯java的一點總結

今天在使用命令行編譯時遇到些問題,順便又仔細分析了一些基礎知識,記錄總結一下。

下面使用javac和java命令都是在D:/Workspace/java目錄下執行的:

 1 //Inner.java 2 package cn.inner; 3 public class Inner 4 { 5     public static void show() 6     { 7         System.out.View Code

javac-d.Inner.java

javacDoTest.java

折騰半天,最終把Inner.java刪掉、重命名都能夠使DoTest.java編譯成功。

自己思索半天,想到一個合理的解釋:javac命令在編譯源文件時,如果源文件中有對其他類的調用(例如本例中的Inner類的調用),

它首先會在與源文件相同的目錄下(即是與該類相同的包下)尋找是否有該類存在,在示例中發現了Inner.java源文件存在(該源文件中肯定存在一個Inner類),

但是事實上Inner.java是屬于cn.inner包下的類,即cn.inner.Inner。檢查到這里,javac命令就報錯了,提示錯誤的源文件...

為了進一步證實我的假設,我修改DoTest.java文件,增加了默認包名:

packagesrc;

在當前目錄下執行:

Javac-d.DoTest.java

成功!

這時在分析下DoTest.java原源文件中導入的其它類:

由于該源文件中有導入cn.inner.Inner類,在使用javac命令編譯時,該命令會按照classpath環境變量的路徑去搜索導入的類,我的環境變量中有配置".",

所以在當前目錄下可以正確尋找到cn.inner.Inner類,在當前目錄下執行javacDoTest.java命令成功

但是在執行javaDoTest命令時,出現下面的結果

這時才發現原來DoTest.java中增加了包名的限制,所以需要把DoTest.class文件移到src目錄下,或者編譯時加上"-d."參數,即javac-d.DoTest.java命令

再執行javasrc/DoTest成功

總結:java中包名的層級關系是用目錄來體現的,比如cn.inner包就對應cn/inner這兩層目錄,在編譯代碼的過程中,如果有import其他包中的類,

則使用javac命令的命令行窗口的目錄必須可以按照classpath環境變量的路徑搜索到import進來的類。另外值得一提的是,編譯后的類都應該按照包名規定放在指定目錄下,

還需要注意被引入的類的源文件和使用引入類的源文件不能放在一起,除非兩個文件都是默認包,如果是這種情況也不會使用import引入另外一個類了。

當然,我今天提到的這些問題,在IDE開發中一般都不會遇到,只是覺得這樣能夠更加深刻的理解java的一些基礎問題。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 元阳县| 丰镇市| 福贡县| 淮北市| 那坡县| 利川市| 精河县| 南宁市| 江西省| 永登县| 永宁县| 乌恰县| 买车| 三明市| 望江县| 南通市| 张家港市| 缙云县| 中超| 广宗县| 万州区| 淮南市| 师宗县| 平乐县| 朝阳市| 海丰县| 赞皇县| 建德市| 准格尔旗| 西乌珠穆沁旗| 绥阳县| 汉中市| 岢岚县| 胶南市| 东源县| 克拉玛依市| 若尔盖县| 共和县| 郧西县| 高雄市| 曲周县|