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

2022-08-31 08:35:07

当我编译我的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

如何编译此程序?


答案 1

您至少需要将扩展名添加到以下行中的文件名中:.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示例中(您实际包含了)您需要包含编译所需的所有必需.jar文件。.java


答案 2

我也为此感到困惑,因为我包括.Java 扩展 ...然后我注意到大写的J。

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

javac myclass.Java 

相反,它应该是:

javac myclass.java 

推荐