Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javac错误:只有在显式请求注释处理时才接受类名_Java_Javac - Fatal编程技术网

javac错误:只有在显式请求注释处理时才接受类名

javac错误:只有在显式请求注释处理时才接受类名,java,javac,Java,Javac,当我编译java程序时,出现以下错误: error: Class names, 'EnumDevices', are only accepted if annotation processing is explicitly requested 1 error 这是java代码(我在Ubuntu上运行) 如何编译此程序?您至少需要在此行的文件名中添加.java扩展名: javac -cp /home/manish.yadav/Desktop/JCuda-All-0.3.2-bin-linux-

当我编译java程序时,出现以下错误:

error: Class names, 'EnumDevices', are only accepted if annotation 
processing is explicitly requested
1 error
这是java代码(我在Ubuntu上运行)


如何编译此程序?

您至少需要在此行的文件名中添加
.java
扩展名:

javac -cp /home/manish.yadav/Desktop/JCuda-All-0.3.2-bin-linux-x86_64 EnumDevices
从:


只有在明确请求注释处理时才接受类名“HelloWorldApp”

如果收到此错误,则在编译程序时忘记包含.java后缀。请记住,该命令是javac HelloWorldApp.java,而不是javac HelloWorldApp


另外,在您的第二个javac示例中(您实际包含了
.java
),您需要包含编译所需的所有.jar文件

我也被这个问题难住了,因为我包括了.Java扩展。。。然后我注意到大写字母J

这也会导致“注释处理”错误:

相反,它应该是:

javac myclass.java 

如何在Ubuntu终端上重现这个神秘的错误:

将其放入名为Main.java的文件中:

public Main{
    public static void main(String[] args){
        System.out.println("ok");
    }
}
然后像这样编译它:

user@defiant /home/user $ javac Main
error: Class names, 'Main', are only accepted if 
annotation processing is explicitly requested
1 error
这是因为您没有在
Main
的末尾指定
.java

这样做,它就会起作用:

user@defiant /home/user $ javac Main.java
user@defiant /home/user $
现在拍拍你的额头,抱怨错误消息太神秘了。

错误“只有在明确请求注释处理时才接受类名”可能是由以下一个或多个原因造成的:

  • 编译时不使用java文件的.java扩展名
  • 编译时.java扩展名(即.java)的大小写不正确
  • 编译时.java扩展中的任何其他输入错误
  • 在同时编译和运行时,忘记使用“&&”连接两个命令(即javac Hangman.java javahangman)。我花了大约30分钟的时间才弄明白这一点,通过分别运行编译和运行程序,我注意到了这一点,当然这两个程序运行得非常好 这可能不是导致此错误的完整原因列表,但这些是我到目前为止所知道的原因

    chandan@cmaster:~/More$ javac New.java
    chandan@cmaster:~/More$ javac New
    error: Class names, 'New', are only accepted if annotation processing is explicitly requested
    1 error
    
    因此,如果在编译后再次错误地使用
    javac
    运行程序。

    使用javac ClassName.java编译程序,
    然后使用java类名执行编译后的代码。您不能仅将javac与类名混合(没有java扩展)。 然后在搜索中写入编辑系统环境变量 在打开的窗口中,我按下名为环境变量的底部 然后是系统变量 推底新 在字段中,新变量写入“路径” 字段中的新值在jdk中的文件夹bin中写入目录 “C:\Program Files\Java\jdk1.8.0\U 191\bin” 但在我的操作系统中,仅此“C:\Program Files\Java\jdk1.8.0\U 191\bin\javac.exe” 按ok 3次

    启动命令。 我推底窗+R。 然后写cmd。 在cmd中写入“cd(带代码的目录)”看起来像C:\Users\user\IdeaProjects\app\src。 然后写“javac(程序主类的名称).java”看起来像blabla.java 和javac在目录中创建字节码,如(主类的名称).class。 最后一次使用cmd“java(主类名称)”编写,我的程序开始工作

    为了避免这个错误,您应该使用带有.java扩展名的javac命令


    Javac degendingorder.java如果在同一行中编译多个文件,请确保仅对每个类文件使用一次Javac

    不正确:


    正确:

    我从Maven项目创建了一个jar文件 (通过写入mvn包mvn安装

    之后,我打开cmd,移动到jar方向,然后

    要运行此代码

    java -cp FILENAME.jar package.Java-Main-File-Name-Class
    
    已编辑:在Pom文件中放入declar后,运行代码的主文件:

    java -jar FILENAME.JAR
    

    那也是,但我想,我还是不会犯那个特别的错误。应该有一个“未找到文件”或类似的内容。我同意。特别是因为这样做很容易出错(因为在使用
    java
    启动时应忽略
    .class
    )“只有在明确请求注释处理时才接受类名“HelloWorldApp”。多么愚蠢的方式说文件找不到。或者错误消息应该指什么?我只能找到此修复,但无法找到错误消息如此措辞的原因。启用注释处理后,您可以在编译期间以编程方式生成类。因此,通过注释处理,即使文件不存在,您实际上也可以编译某些内容(即,您可以动态创建缺少的部分)。诚然,错误消息具有误导性。如果我进一步调查的话,我会再打给你的。你也没有:D!在这两个示例中,您都编写了Main而没有.java!
    chandan@cmaster:~/More$ javac New.java
    chandan@cmaster:~/More$ javac New
    error: Class names, 'New', are only accepted if annotation processing is explicitly requested
    1 error
    
    java -cp FILENAME.jar package.Java-Main-File-Name-Class
    
    java -jar FILENAME.JAR