拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 Java中常见的命令行编译错误

Java中常见的命令行编译错误

白鹭 - 2022-04-10 2155 0 2

一、概述

在命令行上编译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文件扩展名的不正确使用或省略如何在从命令行编译类时导致错误。此外,我们还看到了一些其他错误,这些错误与编译和运行独立应用程序时命令行参数的错误使用有关。



标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *