999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Cmd模式下帶有package的Java程序的編譯和運行

2017-10-21 12:11:43張亞利
科技風 2017年12期

摘要:Java中采用package來對類進行統(tǒng)一管理,從而有效避免類名沖突的問題。多數(shù)開發(fā)工具習慣性地把程序放在不同package里。然而,在cmd模式下,編譯和運行帶有package的程序時,往往找不到類,本文針對該問題,進行分析并給出解決方法。

關鍵詞:Java;Package;編譯器;完全路徑

在開發(fā)復雜的Java項目時,程序員很難確保自己選用的類名和其他程序員選擇的類名完全不同。為避免類名的沖突,Java使用包(package)對類進行統(tǒng)一管理。

Java中的包,相當于文件中的目錄,目錄名即是包名,如目錄結構為ch5/bean,包名即為ch5.bean;在bean目錄中創(chuàng)建java類,并在文件的開頭添加package ch5.bean;工程根目錄中的java類文件未特別指定包名的情況下,即不使用package語句時,該程序默認放在缺省包中。事實上,我們在做開發(fā)的時候,習慣性地把每個類都放在不同功能的package里。

于是,常常有這樣的問題出現(xiàn):“為什么在MyEclipse下能夠正在編譯和運行的帶有package的程序,在cmd模式下總是提示找不到類呢?”。今日,我們將針對“帶有package的Java程序的編譯和運行的問題”進行詳細的剖析。

舉例說明,Demo1位于缺省包,Demo2_1(有包)和Demo2_2(有包,同時還調用其他包中的類)位于包ch5當中,Demo3位于ch5.bean當中,接下來我們對以下四段代碼進行分析。

第一個類Demo1:

public class Demo1 {

public static void main(String[] args) {

System.out.print(“我在缺省包下....”); }

}

第二個類Demo2_1:

package ch5;

public class Demo2 {

public static void main(String[] args) {

System.out.print(“我在package ch5....”);}}

第三個類Demo2_2:

package ch5;

import ch5.bean.Demo3;

public class Demo2 {

public static void main(String[] args) {

System.out.println(“我在package ch5下....”);

Demo3 td = new Demo3(); //調用Demo3

td.show();}}

第四個類Demo3:

package ch5.bean;

public class Demo3 {

public void show()

{System.out.print(“我是Demo3,位于ch5.bean下......”);}}

現(xiàn)在,假設我們將項目TestPackage放置在D盤,目錄結構如下:

圖1 文件目錄

下面我們將在cmd模式下對程序進行編譯和運行:

1)按下列命令編輯和運行Demo1,將得到正常的結果。

D:\TestPackage>javac Demo1.java

D:\TestPackage>java Demo1

我在缺省包下....

分析:該例子,不屬于任何包中,也沒有相互的調用關系,可以獨立編譯和運行。

2)按下列命令進行編輯和運行Demo2_1,程序將出現(xiàn)如下異常。

D:\TestPackage>ch5>javac Demo2_1.java

D:\TestPackage>ch5>java Demo2_1

Exception in thread “main” java.lang.NoClassDefFoundError:Demo2_1 (wrong na

me:ch5/Demo2_1)

分析:該類位于ch5包中,沒有相互調用關系。可以進入目錄ch5中編譯,也可以用:D:\TestPackage> javac ch5/Demo2_1.java來對代碼進行編譯。但運行時,系統(tǒng)會在當前目錄D:\TestPackage\ch5下,尋找ch5/Demo2_1,所以會出現(xiàn)找不到類的錯誤。因此,運行時必須退出到包名對應的文件夾之外,如下命令可得到對應的結果:

D:\TestPackage>java ch5/Demo2_1

我在package ch5下....

3)按下列命令進行編輯和運行Demo2_2,程序將出現(xiàn)如下異常。

D:\TestPackage\ch5>javac Demo2_2.java

錯誤1:程序包ch5.bean不存在

錯誤2:找不到符號Demo3;

分析:該類位于ch5包中,同時調用了ch5/bean下的Demo3。由于Demo2_2中引用了Demo3,而java本身具有類似于make的功能,因此無需對Demo3進行單獨的編譯,對Demo2_2進行編譯時會自動生成Demo3的class文件,但是這里一定要強調的是兩個文件的存放位置。Demo2_2中有句代碼import ch5.bean.Demo3至關重要,這句代碼,表示Demo2_2從當前目錄下即D:/TestPackage/ch5,開始尋找ch5/bean/目錄下的Demo3類,即D:/TestPackage/ch5/ch5/bean/Demo3.java。這時,該目錄顯然不存在。

為解決該問題,我們可以將復雜問題簡單化,直接將Demo2_2的路徑告知編譯器,方法如下。

D:\TestPackage>javac ch5/Demo2_2.java

D:\TestPackage>java ch5/Demo2_2

我在package ch5下....

我是Demo3,位于ch5.bean下......

綜上分析,我們不難發(fā)現(xiàn),帶有package的程序,最容易出現(xiàn)錯誤的地方就是編譯器找不到類,本文給出的解決方法是命令行給出程序的全路徑。當然,我們也可以考慮,把包的路徑配置到環(huán)境變量中,然而,這種方法操作起來,過于繁瑣,本文不推薦采用。

作者簡介:張亞利(1981),女,河南沁陽人,漢族,碩士研究生,講師,研究方向:計算機軟件開發(fā)。

主站蜘蛛池模板: 男人天堂亚洲天堂| 伦伦影院精品一区| 国产精品原创不卡在线| 欧美午夜网站| 黄色免费在线网址| 国产麻豆另类AV| 久久黄色视频影| 日日噜噜夜夜狠狠视频| 日韩精品一区二区三区大桥未久| 亚洲国产日韩一区| 尤物成AV人片在线观看| 亚洲成av人无码综合在线观看| 大乳丰满人妻中文字幕日本| 制服丝袜在线视频香蕉| 色婷婷在线影院| 亚洲香蕉伊综合在人在线| 欧美成在线视频| 蜜芽一区二区国产精品| 国产精品欧美在线观看| 伊伊人成亚洲综合人网7777| 中文国产成人精品久久| 国产剧情国内精品原创| 黄色网站不卡无码| 啦啦啦网站在线观看a毛片| 99精品福利视频| 漂亮人妻被中出中文字幕久久| 久久香蕉国产线看观看亚洲片| 六月婷婷激情综合| 国产福利免费视频| 99re热精品视频中文字幕不卡| 久久精品国产精品一区二区| 波多野衣结在线精品二区| 午夜精品久久久久久久无码软件| 欧美在线天堂| 狼友视频国产精品首页| 国产91av在线| 日韩美女福利视频| 一本久道久久综合多人| 婷婷色丁香综合激情| 精品伊人久久久久7777人| 午夜精品福利影院| 亚洲美女一区二区三区| 99久久精品国产麻豆婷婷| 97久久精品人人| 精品国产免费人成在线观看| 无码视频国产精品一区二区| 秋霞午夜国产精品成人片| 黄色一级视频欧美| 亚洲无线一二三四区男男| 97se亚洲综合在线天天| 久久这里只有精品2| 亚洲精品无码高潮喷水A| 日韩在线观看网站| 国产视频资源在线观看| AV无码无在线观看免费| 国产一二视频| 日韩不卡高清视频| 国产免费一级精品视频| 国产精品天干天干在线观看| 日韩精品成人在线| 欧美一级专区免费大片| 国产精品第一区在线观看| 欧美日韩精品一区二区在线线| 亚洲综合网在线观看| 久久人搡人人玩人妻精品| 毛片免费观看视频| 精品国产福利在线| 亚洲精品国偷自产在线91正片| 亚洲精品无码久久久久苍井空| 国产在线91在线电影| 狠狠色噜噜狠狠狠狠色综合久 | 国产精品无码在线看| 国产伦片中文免费观看| 99热国产在线精品99| 久久精品国产精品国产一区| 国产a v无码专区亚洲av| 日韩福利在线观看| 色综合手机在线| 成人毛片免费观看| 国产精品美女免费视频大全| 亚洲a免费| 亚洲天堂自拍|