簡體   English   中英

Java Classpath 不使用當前目錄

[英]Java Classpath not using current directory

是的......再次關於類路徑的問題。 我使用命令javac Main.java編譯了類文件,然后我嘗試通過java Main執行它你怎么看? 我得到了那個著名的錯誤: Error: Could not find or load main class Main 為什么? 我將類路徑環境變量設置為“.;” (當然沒有“)。怎么了?我使用jdk 1.8.0_51。在IDE中(我使用intellij idea 2021.3)一切正常。唯一導入的類是java.io.File。它只有在我使用命令運行時才有效java -cp <path to dir not including package folders> <full qualified class name> Windows 8.1

依賴CLASSPATH系統變量是個壞主意。 一台機器可用於運行許多不同的應用程序,因此“全局設置”的概念是愚蠢的。

嘗試java -cp . Main java -cp . Main

如果那確實有效

然后你一直在弄亂你的CLASSPATH環境變量並刪除了. 從中。 放回去。 或者更好的是忘記 CLASSPATH; 始終使用-cp 使用-cp . 如果你喜歡。 或者制作jar文件並使用java -jar thejar.jar運行它們,它會忽略CLASSPATH-cp參數(而不是查看 jar 清單中的Class-Path條目)。

如果這不起作用

然后你不在適當的目錄中。 或者,您對軟件包感到困惑。 假設您的Main.java如下所示:

package com.foo;

public class Main {
  public static void main(String[] args) {
    System.out.println("Hello");
  }
}

然后你編譯它; 出現一個Main.class文件。

java不能運行它,除非Main.class位於名為foo的目錄中,而該目錄又位於名為com的目錄中。 然后,將包含com的目錄放在類路徑中。 不是包含Main.class的目錄。 然后你運行java -cp theDirThatContainsCom com.foo.Main java -(does not matter what you try it cannot be done) Main Main——因為你提供了你想運行的類的全名java ,全名是com.foo.Main

當前目錄 ( . ) 是默認的類路徑。 但它不會自動包含子目錄。 因此,如果您有包,則應將目錄顯式添加到類路徑中。

在此處查看更多信息未指定類路徑時,默認類路徑是什么?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM