在剛開始學java的時候,從dos命令列(這裡只針對Windows環境下)執行Java程式是一個很不錯的嘗試。現在大體總結下自己在嘗試後遇到的一些問題,及解決辦法。
首先,通過命令列查看是否安裝Java程式,以及列印classpath和java_home變數:
通過這三個,就可以得知你環境配置是否ok
如果執行java -version報錯 或者說找不到,那應該是沒有配置java path環境,請自行百度配置。
Java相關的術語說明
這裡僅說明下今天的主題:classpath,至於java_home和path請自行百度。
設定CLASSPATH:
這個變數設定很重要,它的作用就是 在執行java xxx.class的時候,告訴jvm去那個目錄下找這個xxx去執行。下文主要圍繞這個來說明一些問題。
現在,開始我們一個Java簡單程式的編寫:
1.在案頭右鍵簡曆一個Hello.java
/***author:九易揚*///package com.godsdk;public class Hello{ public static void main(String[]args){ //System.out.println("hello world : hello"); }}class _a{ public static void main(String[]args){ System.out.println("hello world:_a"); }}class 1Test{ public static void main(String[]args){ System.out.println("hello world:1Test"); }}class hello{ public static void main(String[]args){ System.out.println("hello world:hello"); }}
我們看到 ,我們在這個名為Hello.java檔案中寫了幾個類,Hello、_a、1Test、hello;
現在我們,對該檔案進行編譯下:
報錯了,相信都清楚這個問題,這個主要是說明下 類名 的一些命名問題,至於具體就不想詳述了,但要強調一點,如下問,我們把1Test給幹掉,然後在編譯:
奇怪,怎麼沒聲稱hello.class,先不管,執行一把先。
現象很奇怪,這裡有兩個問題:
1.案頭明明存在編譯後的Hello.class,但在執行java Hello的時候報錯了。
2.執行java hello的時候,是可以執行的,並且輸出hello類中的輸出;
現在 我們把詳細資料列印出來瞧瞧:
!!!!! 報ClassNotFound
也就是說 沒有找到Hello,但卻找到了hello。這裡就說明hello把Hello給覆蓋了;所以Java類名在編譯的時候大小寫不敏感。
Java的一些規定
1、若在源檔案中定義了聲明為public的類,需要將類所在的源檔案的檔案名稱取名為類名
2、在同一個源檔案中有且只能有一個定義為public的類
3、編譯時間檔案名稱大小寫是不敏感的,執行的時候載入的類名是大小寫敏感的
但是在執行的時候大小寫銘感的
所以,上文中 後面的hello把Hello給覆蓋了,在執行的時候執行java Hello的時候就報錯了。
下面,說另一個問題,上文中,我在執行的時候 寫過 cd Desktop
這一句的作用是什麼呢。從最上面大家看到我的classpath環境為“.”,其表示為目前的目錄
而最初的我的目錄是:
dir:C:\Users\Administrator
也就是說 ,我的classpath=”C:\Users\Administrator”
執行之後 我的目錄是:
dir:C:\Users\Administrator\Desttop
classpath=”C:\Users\Administrator\Desttop” 關注的一點來了,因為我的.class檔案在 C:\Users\Administrator\Desttop這個目錄,所以 如果我在 最初的dos環境下執行 java hello的話,jvm預設就會去 C:\Users\Administrator路勁下去找hello.class,所以執行就報錯了。
這個,可以手動試試
當然,如果有人非要在 C:\Users\Administrator去執行 C:\Users\Administrator\Desttop目錄下的hello.class,
可以這樣
上文中 我把Desktop攜程Desttop,請自改之。
從這裡 執行cmd可以看出 採用
Java -cp C:\Users\Administrator\Desktop hello hello world:hello可以就執行了,其中-cp就是指定classpath環境變數,即classpath所在目錄。
2.帶package 編譯
首先將上文中的Hello.java檔案中的package那一行的注釋去掉,然後執行
就會發現按包名目錄來產生想要的class檔案。
擴充一點,其實在windows環境下包名也可以大寫,但最好不要在正式工程中嘗試。
這是因為為了適應不同的作業系統而做的改變吧。因為Unix系的作業系統是大小寫敏感的,所以如果在作業系統中”COM”和”com”兩個檔案夾被認為是兩個不同的檔案夾;而在Windows作業系統中,大小寫是不敏感的,因此”COM”和”com”兩個檔案夾為被認為是同一個檔案夾。正因為這樣,如果有人正好在Unix系的作業系統下寫了兩個包名。