![](/img/trans.png)
[英]Spring ignores property file in current directory using that in CLASSPATH instead
[英]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.