簡體   English   中英

使用“Code Runner”時顯示“java.lang.NoClassDefFoundError”(使用 Maven)

[英]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 項目,所以正確的執行命令是:

  1. 轉到文件夾java: cd src\main\java
  2. 編譯.java文件: javac org\seifert\learnjava8\hello.java
  3. 運行 java 文件: java org.seifert.learnjava8.hello 在此處輸入圖像描述

Code Runner運行java文件時,執行命令為

"code-runner.executorMap":{
    "java": "cd $dir && javac $fileName && java $fileNameWithoutExt",
}

$dir代表當前打開文件的直接路徑, javacjava命令不包括 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那么問題可以解決為:解決的程序在這張圖片中

正如您提到的,您使用代碼運行器。 按照步驟:

  1. 前往你的 vscode 的設置並搜索代碼運行器並找到

Coderunner:執行者Map

  1. 單擊“在 settings.json 中編輯”設置頁面

  2. 在 settings.json 頁面中查找 java 為:java

"code-runner.executorMap": {
  "java": "cd $dir && javac $fileName && java $fileNameWithoutExt",
 }
  1. 只需在雙引號內的行尾添加.java ,無需任何空格。 然后,保存它。
"code-runner.executorMap": {
        "java": "cd $dir && javac $fileName && java $fileNameWithoutExt.java",
}
  1. 現在運行你的程序。 你已准備好出發!

暫無
暫無

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

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