[英]Show "java.lang.NoClassDefFoundError" (with Maven) when using "Code Runner"
我正在使用帶有 Maven 的 VSCode 在 macOS Big Sur 下學習 Java(我的 javac 版本是 11.0.10)。
當我使用 VSCode 列表中顯示的“RUN”在終端中運行代碼時可以。 但是卻顯示錯誤“Could Not Find Or Load Main Class”(實際上是中文“找不到或無法載入主要類別你好”)和原因“java.lang.NoClassDefFoundError: orgseifert/learnjava8/hello” (錯誤的名字:你好)”。
如您所見,.java 文件只是一個簡單的顯示“hello world”的文件。 整個屏幕圖像在這里
以前有沒有使用 Code Runner 的人遇到過這個問題? 我該如何解決這個問題?
發生錯誤是因為必須使用其完全限定名稱來調用它。 明確一點,這個 class 的名字不是hello
,而是org.seifert.learnjava8.hello
。 我創建了一個簡單的 maven 項目,所以正確的執行命令是:
cd src\main\java
javac org\seifert\learnjava8\hello.java
java org.seifert.learnjava8.hello
Code Runner運行java文件時,執行命令為
"code-runner.executorMap":{
"java": "cd $dir && javac $fileName && java $fileNameWithoutExt",
}
$dir
代表當前打開文件的直接路徑, javac
和java
命令不包括 package 一起編譯,導致錯誤:
所以解決方案是轉向設置並編輯"code-runner.executorMap"
:
"code-runner.executorMap":{
"java": "cd /users/seiferthan/.../src/main/java && javac org/seifert/learnjava8/$fileName && java org.seifert.learnjava8.$fileNameWithoutExt",
}
該錯誤是因為它不是由其“完全限定名稱”調用的。 該項目必須被稱為hello.java
而不是簡單的hello
。 你的文件的執行命令應該是: java <directory in which your file lies> hello.java
所以你的錯誤應該是這樣的:錯誤顯示在這張圖片中。 如果你使用.java
那么問題可以解決為:解決的程序在這張圖片中
正如您提到的,您使用代碼運行器。 按照步驟:
Coderunner:執行者Map
單擊“在 settings.json 中編輯”設置頁面。
"code-runner.executorMap": {
"java": "cd $dir && javac $fileName && java $fileNameWithoutExt",
}
.java
,無需任何空格。 然后,保存它。"code-runner.executorMap": {
"java": "cd $dir && javac $fileName && java $fileNameWithoutExt.java",
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.