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

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

如何運(yùn)行Java程序和設(shè)置CLASSPAT

2019-11-18 11:51:11
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  如何運(yùn)行java和CLASSPATH環(huán)境變量的設(shè)置是學(xué)習(xí)和使用JAVA中最基本的問(wèn)題,本不應(yīng)在此贅述。但近來(lái)不少人在論壇上提出的問(wèn)題卻與此有關(guān),我平時(shí)碰到的一些初學(xué)者也往往在這個(gè)問(wèn)題上卡了殼,因此寫(xiě)了這篇小東西,希望能對(duì)一些初學(xué)者有用。
  
  我們都知道要運(yùn)行一個(gè)JAVA程序要經(jīng)歷編寫(xiě)原程序,編譯和運(yùn)行三個(gè)步驟。其中編譯要用到j(luò)avac命令,而運(yùn)行則要用到j(luò)ava命令。比如有一個(gè)HelloWorld的類,保存在HelloWorld.java文件中。編譯時(shí)用:
  javac HelloWorld.java
  生成HelloWorld.class文件,運(yùn)行時(shí)要用:
  java HelloWorld
  
  這里要注重javac與java兩個(gè)命令的重要差別。javac需要的參數(shù)是JAVA原文件的文件名,因此.java的后綴是不能少的,而javac需要的參數(shù)是JAVA的類名,所以絕對(duì)不能加.class后綴。這樣以下兩種用法都是錯(cuò)誤的:
  javac HelloWorld (Wrong!!)
  java HelloWorld.class (Wrong!!)
  
  又因?yàn)閃indows的文件系統(tǒng)對(duì)文件名的大小寫(xiě)是不敏感的,因此在編譯時(shí)給出的原文件名大小寫(xiě)沒(méi)有關(guān)系,但java命令要的是類名,而在JAVA中所有的標(biāo)識(shí)符包括類名都是大小寫(xiě)敏感的,因此在用java命令時(shí),類名的大小寫(xiě)必須和原文件中定義的類名完全一致。注重下列命令用法:
  javac helloworld.java (Corrent!!)
  java HelloWorld (Wrong!!)
  
  既然用java命令運(yùn)行JAVA程序時(shí)給出的是類名而不是文件名,那么java又是到那里去找到要運(yùn)行的類的呢?這就要用到CLASSPATH了。即可以通過(guò)設(shè)置CLASSPATH環(huán)境變量,又可以通過(guò)-cp命令行參數(shù)指示java到哪里去查找類。其實(shí)javac也是需要CLASSPATH來(lái)指明編譯時(shí)到哪里查找用到的類的定義的。假如CLASSPATH設(shè)定不正確,運(yùn)行時(shí)就會(huì)碰到這樣的錯(cuò)誤:
  Exception in thread "main" java.lang.NoClassDefFoundError: <類名>
  而碰到這樣的錯(cuò)誤原因只可能是兩個(gè):
  1. CLASSPATH設(shè)定不正確;
  2. 類名打錯(cuò)。初學(xué)者最常見(jiàn)的是大小寫(xiě)錯(cuò)。
  
  CLASSPATH是一組互相間由";"隔開(kāi)的目錄,zip文件或jar文件。ZIP和JAR文件一般是用來(lái)引入一些第三方的類庫(kù),這些文件中也都包含了JAVA的類。這些目錄、ZIP文件或JAR文件一般都是用絕對(duì)路徑,假如用相對(duì)路徑,那么在運(yùn)行時(shí)就會(huì)解釋為相對(duì)于當(dāng)前路徑。
  
  在Win9x系統(tǒng)中,一般可以通過(guò)在autoexec.bat中加入這樣的語(yǔ)句來(lái)定義全局的CLASSPATH(假設(shè)你把自己寫(xiě)的類放在c:/myjava目錄下)
  set CLASSPATH=c:/myjava
  Win9x操作系統(tǒng)需要重起機(jī)器,這個(gè)設(shè)置才能起作用。
  假如是Windows2000,可以在控制面板/系統(tǒng)/高級(jí)/環(huán)境變量中新建CLASSPATH環(huán)境變量。Windows2000不需要重起機(jī)器,但對(duì)設(shè)置之前打開(kāi)的DOS命令窗口沒(méi)有效果。
  要檢查CLASSPATH設(shè)置是否正確,可以通過(guò)在DOS提示符下大打入以下命令:
  echo %CLASSPATH%
  
  假如要用-cp命令參數(shù),則可以這樣:
  java -cp c:/myjava .....
  
  下面是天邊浪子與12237558鯤鵬的一段對(duì)話,希望能對(duì)初學(xué)者有點(diǎn)幫助~
  
  (2001-06-08 17:01:06) 天邊浪子
  C:/jdk
  這是我JDK的安裝目錄!
  你幫我寫(xiě)一個(gè)autoexec.bat 和Config.sys好嗎?
  鯤鵬:
  與config.sys無(wú)關(guān).
  要害是你的類放在什么路徑.
  
  天邊浪子:我寫(xiě)的在c:/java下面!
  
  鯤鵬:
  autoexec.bat:
  set PATH=%PATH%;c:/jdk/bin
  set CLASSPATH=c:/java
  
  天邊浪子:那原來(lái)的PATH還用改嗎?
  
  鯤鵬:原來(lái)的PATH是怎樣的?
  
  天邊浪子:哦,我加在原來(lái)";"的后面了~
  
  鯤鵬:這樣應(yīng)該也不錯(cuò)呀。
  
  天邊浪子:還是出錯(cuò)了~
  
  鯤鵬:你把提示發(fā)過(guò)來(lái)
  
  天邊浪子:
  C:/java>java helloworldapp
  Exception in thread "main" java.lang.NoClassDefFoundError: helloworldapp (wrong
  name: HelloWorldApp)
   at java.lang.ClassLoader.defineClass0(Native Method)
   at java.lang.ClassLoader.defineClass(Unknown Source)
   at java.security.SecureClassLoader.defineClass(Unknown Source)
   at java.net.URLClassLoader.defineClass(Unknown So
      這只是一半,還有一半沒(méi)有發(fā)過(guò)來(lái)呢~
  鯤鵬:
  執(zhí)行javac helloworld.java時(shí),javac將通過(guò)文件系統(tǒng)查找helloworld.java這個(gè)文件,因?yàn)槲募到y(tǒng)是大小寫(xiě)不分的,所以helloworld.java 和HelloWorld.java是一樣的。
  執(zhí)行java helloworld時(shí),java自己查找helloworld這個(gè)類,即使它通過(guò)文件系統(tǒng)找到了HelloWorld.class這個(gè)類文件,但它會(huì)把類文件中的類名和你給出的類名比較,這個(gè)比較是區(qū)分大小寫(xiě)的。
  我沒(méi)有說(shuō)錯(cuò)。
  在執(zhí)行javac時(shí),給出的文件名大小寫(xiě)是沒(méi)有關(guān)系的,
  但執(zhí)行java時(shí),給出的類名大小寫(xiě)也必須正確。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 仙居县| 长葛市| 栾川县| 涿鹿县| 庆城县| 孟连| 师宗县| 垦利县| 彭水| 定边县| 河北区| 汝阳县| 重庆市| 通城县| 萨嘎县| 商南县| 西昌市| 焉耆| 普兰店市| 潮安县| 南澳县| 东宁县| 福贡县| 陵川县| 临澧县| 东辽县| 西丰县| 务川| 西乌珠穆沁旗| 祥云县| 张家港市| 河池市| 福海县| 商南县| 澄迈县| 分宜县| 陇南市| 广南县| 原阳县| 扎赉特旗| 房山区|