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

时间:2011-02-21 07:15:45

标签: java javac

编译java程序时出现此错误:

error: Class names, 'EnumDevices', are only accepted if annotation 
processing is explicitly requested
1 error

这是java代码(我在Ubuntu上运行它。)

import jcuda.CUDA;    
import jcuda.driver.CUdevprop;    
import jcuda.driver.types.CUdevice;

public class EnumDevices {

  public static void main(String args[]) {
     CUDA cuda = new CUDA(true);    
        int count = cuda.getDeviceCount();

        System.out.println("Total number of devices: " + count);

        for (int i = 0; i < count; i++) {

          CUdevice dev = cuda.getDevice(i);
          String name = cuda.getDeviceName(dev);
          System.out.println("Name: " + name);
          int version[] = cuda.getDeviceComputeCapability(dev);

          System.out.println("Version: " + 
              String.format("%d.%d", version[0], version[1]));
          CUdevprop prop = cuda.getDeviceProperties(dev);
          System.out.println("Clock rate: " + prop.clockRate + " MHz");
          System.out.println("Threads per block: " + prop.maxThreadsPerBlock);
        }
    }
}

这是javac命令:

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

如何编译此程序?

15 个答案:

答案 0 :(得分:94)

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

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

来自official faq

  

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

     

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

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

答案 1 :(得分:13)

我也被这个难过,因为我包括.Java扩展......然后我注意到了首都J.

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

javac myclass.Java 

相反,它应该是:

javac myclass.java 

答案 2 :(得分:4)

使用 javac ClassName.java 编译程序, 然后使用 java ClassName 来执行编译的代码。你不能只将javac与ClassName混合(没有java扩展名)。

答案 3 :(得分:3)

我了解到,通过将源文件存储在名为Java

的文件夹中,您也可以获得此错误

答案 4 :(得分:1)

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来运行程序。

答案 5 :(得分:0)

如何在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

这是因为你没有在.java结束时指定Main

这样做,并且有效:

user@defiant /home/user $ javac Main.java
user@defiant /home/user $

现在扯下你的额头,抱怨错误信息是如此神秘。

答案 6 :(得分:0)

错误“仅在明确请求注释处理时才接受类名”可能由以下一项或多项引起:

  1. 编译时不使用.java扩展名作为java文件。
  2. 编译时.java扩展名(即.Java)的大写不正确。
  3. 编译时.java扩展名中的任何其他拼写错误。
  4. 在同时编译和运行时,忘记使用'&amp;&amp;'连接两个命令(即javac Hangman.java java Hangman)。我花了30分钟来解决这个问题,我通过运行编译和单独运行程序注意到这一点,当然这完全没问题。
  5. 这可能不是导致此错误的完整原因列表,但这些是我到目前为止所知道的原因。

答案 7 :(得分:0)

也许您可能正在使用文件名而不是方法名进行编译....检查一次我也犯了同样的错误,但我很快就纠正了.....#happy Coding

答案 8 :(得分:0)

首先从https://www.oracle.com/technetwork/java/javase/downloads/index.html下载jdk。 然后在搜索中编写“编辑系统”环境变量 在打开的窗口中,我将底部称为“环境变量” 然后在系统变量enter image description here中 推底新 在字段中,将新变量写入“路径” 在字段中,将新值写入jdk中的文件夹bin中的目录,例如 “ C:\ Program Files \ Java \ jdk1.8.0_191 \ bin” 但是在我的操作系统中只能使用此“ C:\ Program Files \ Java \ jdk1.8.0_191 \ bin \ javac.exe” enter image description here 按确定3次

启动Cmd。 我推下窗户+R。 然后写cmd。 在cmd中写入“ cd(带代码的目录)”看起来像C:\ Users \ user \ IdeaProjects \ app \ src。 然后编写“ javac(程序的主类名称).java”,就像blabla.java 和javac在您的目录中创建字节码,例如(您的主类的名称).class。 最后在cmd“ java(您的主类的名称)”中写入内容,并且我的程序开始工作

答案 9 :(得分:0)

Error : class name only accepted if annotation processing is explicitly request

为避免此错误,应使用带有.java扩展名的javac命令。

Javac DescendingOrder.java <-完美运行。

答案 10 :(得分:0)

我认为这也是因为编译不正确。

因此适用于linux(ubuntu).....

javac file.java

java文件

答案 11 :(得分:0)

如果您在同一行中编译多个文件,请确保仅对Javac使用一次,而不对每个类文件使用。

不正确: enter image description here

正确:enter image description here

答案 12 :(得分:0)

我从 Maven 项目创建了一个 jar 文件 (通过编写 mvn packagemvn install

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

运行这段代码

java -cp FILENAME.jar package.Java-Main-File-Name-Class

编辑:放入Pom文件后声明主要运行代码:

java -jar FILENAME.JAR

答案 13 :(得分:-2)

如果将ur文件保存为示例:hello.java和

类示例。在cmd中执行此操作

javac hello.java

java示例

有效。

答案 14 :(得分:-2)

您查看路径javac.exe和java.exe

D:\ Test>“ C:\ jdk1.7.0_80 \ bin \ javac.exe” TestMain.java D:\ Test>“ C:\ jdk1.7.0_80 \ bin \ java.exe” TestMain.java