聲明了包的類Java命令找不到或無法加載主類


首先你需要配置環境變量:
 CLASSPATH=.;%JAVA_HOME%/lib/dt.jar;%JAVA_HOME%/lib/tools.jar
   java 命令會在 CLASSPATH 目錄下找相應的 class 文件。

 java HelloWorld
    如果你輸入上面的命令,那么會在 CLASSPATH 下尋找 HelloWorld.class 文件。

 java tee.Test
    如果你輸入上面的命令,那么會先在 CLASSPATH 找 tee 目錄,然后在 tee 目錄里找 Test.class 文件。

    所以說如果你的環境變量配置錯誤,例如漏了".;",那么就不會在當前目錄尋找了。
   (.代表當前目錄,..代表上級目錄)。

 java -cp . HelloWorld
   如果你輸入上面的命令,那么必然會在當前目錄找 HelloWorld.class 文件。
 
 
關於包的問題,我再補充以下幾點(以我自己寫的socket發送端的代碼作為例子)
 1 package WebProgramingDemo;
 2 
 3 import java.io.IOException;
 4 import java.net.DatagramPacket;
 5 import java.net.DatagramSocket;
 6 import java.net.InetAddress;
 7 
 8 public class UDPSendDemo {
 9 
10     /**
11      * @param args
12      * @throws IOException 
13      */
14     /*
15      * 創建UDP傳輸的發送端的步驟;
16      * 1.建立UDP的socket服務
17      * 2.明確要發送的數據
18      * 3.將數據封裝成數據包
19      * 4.用socket服務的send方法將數據包發送出去
20      * 5.關閉資源
21      */
22     public static void main(String[] args) throws IOException {
23 
24         System.out.println("發送端啟動。。。");
25         /*
26          * 創建UDP傳輸的發送端的步驟:
27          */
28         //1.建立UDP的socket服務
29         DatagramSocket ds = new DatagramSocket(8888);
30 
31         // 2.明確要發送的數據
32         String s1 = "UDP 傳輸顯示!";
33         // 3.將數據封裝成數據包
34         byte buf[] = s1.getBytes();
35         DatagramPacket dp = new DatagramPacket(buf, buf.length,
36                 InetAddress.getByName("192.168.2.103"), 10000);
37         // 4.用socket服務的send方法將數據包發送出去
38         ds.send(dp);
39         // 5.關閉資源
40         ds.close();
41         
42     }
43 
44 }

很明顯,UDPSendDemo屬於WebProgramingDemo包,
我們cmd命令行進入到包所在的目錄對該java文件進行編譯和運行,會出現這樣的錯誤:

這個類的全名應該是WebProgramingDemo.UDPSendDemo,而我們輸入的是UDPSendDemo.

接着,我們退回到上層目錄,因為編譯已經通過,所以我們直接運行:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM