Java中常見的命令行編譯錯誤
- java
一、概述
在命令行上編譯 Java 程序時,預期命令行選項或參數中的任何不匹配都會導致錯誤。
在本教程中,我們將首先調查“Class Names Are Only Accepted if Annotation Processing Is Explicitly Requested”
錯誤。然後,我們將看看其他一些常見的編譯錯誤。
2. 錯誤示例
假設我們有以下類DemoClass
:
package org.1ju;
public class DemoClass {
// fields and methods
}
現在,讓我們嘗試使用javac
命令編譯DemoClass
:
javac DemoClass
上面的命令會報錯:
error: Class names, 'DemoClass', are only accepted if annotation processing is explicitly requested
1 error
該錯誤似乎與註釋處理有關,並且有點神秘,因為DemoClass
沒有與註釋處理相關的代碼。此錯誤的實際原因是**DemoClass
不是註釋處理源文件**。
註釋處理源文件是一種在編譯時生成附加源代碼的便捷技術。與標準 Java 源文件相比,要編譯這些源文件,不需要提供.java
文件擴展名.
3. 解決問題
讓我們使用正確的文件擴展名.java
再次編譯DemoClass
:
javac DemoClass.java
正如預期的那樣,我們將源文件編譯成DemoClass.class
文件。
4. 其他提示和技巧
當我們知道正確的編譯方式時,這很容易解決,但在編譯或運行應用程序時,我們仍然可能會遇到類似的困難。
4.1.主類錯誤
假設我們有一個DemoApplication
類,它有一個main
方法:
public class DemoApplication {
public static void main(String[] args) {
System.out.println("This is a DemoApplication");
}
}
現在讓我們使用java
命令執行應用程序:
java DemoApplication.class
結果是ClassNotFoundException
:
Error: Could not find or load main class DemoApplication.Class
Caused by: java.lang.ClassNotFoundException: DemoApplication.Class
現在,讓我們嘗試運行不帶任何文件擴展名的應用程序——甚至不帶.class
或.java
:
java DemoApplication
我們應該在控制台上看到輸出:
This is a DemoApplication
4.2.使用不正確的文件擴展名
現在讓我們嘗試使用以下命令編譯源文件,該命令有一個拼寫錯誤 - 全部大寫的“ .JAVA”
:
javac DemoClass.JAVA
這樣做會產生與我們在上面看到的相同的錯誤消息:
error: Class names, 'DemoClass.JAVA', are only accepted if annotation processing is explicitly requested
1 error
5. 結論
在本文中,我們了解了.java
文件擴展名的不正確使用或省略如何在從命令行編譯類時導致錯誤。此外,我們還看到了一些其他錯誤,這些錯誤與編譯和運行獨立應用程序時命令行參數的錯誤使用有關。