錯誤: 找不到或無法載入主類 -java(7)
阿新 • • 發佈:2018-12-22
問題描述
最近在做java程式時,在java檔案所在目錄下執行javac可以生成class檔案,但是繼續執行java命令提示錯誤: 找不到或無法載入主類
.
問題截圖
這是javac命令成功運行了,包為javanet
, 其中有兩個java檔案Server.java
和Client.java
執行java命令,則一直報錯
解決方案
- javac:此命令為java編譯命令,執行是預設在當前路徑下找.java檔案。所以上述情況下執行成功了
- java:此命令為java執行命令.預設先尋找java檔案的package,然後尋找對應class.如果java原始檔中沒有包名,則是尋找當前目錄下的class檔案。如果二者均沒有找到,轉去尋找classpath。
以本情況為例
我的Server.java
檔案為
package javanet; import java.io.DataInputStream; import java.io.DataOutputStream; import java.net.ServerSocket; import java.net.Socket; public class Server { public static void main(String args[]) { String[] answer = {"在算錯的情況下", "狗就能生狗", "電視麵包沙發"}; ServerSocket serverForClicent = null; Socket socketOnServer = null; DataOutputStream out = null; DataInputStream in = null; try { serverForClicent = new ServerSocket(2010); } catch (Exception e) { System.out.println(e); } try { System.out.println("等待客戶"); socketOnServer = serverForClicent.accept(); out = new DataOutputStream(socketOnServer.getOutputStream()); in = new DataInputStream(socketOnServer.getInputStream()); for (int i=0;i<answer.length;i++) { String s = in.readUTF(); System.out.println("伺服器收到的客戶提問"+s); out.writeUTF(answer[i]); Thread.sleep(500); } } catch (Exception e) { System.out.println("客戶已斷開"); } } }
存在包名package javanet;
,就需要把目錄切換到javanet同級目錄上執行java命令,而當我把package javanet;
刪掉後,就在class檔案所在目錄執行即可。
刪掉之前在與javanet
同級目錄下執行java javanet/Server
刪掉之後,重新編譯執行