1. ホーム
  2. java

[解決済み】javacのエラー。クラス名は、アノテーション処理が明示的に要求された場合のみ受け付けられます。

2022-02-03 13:40:45

質問事項

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

このプログラムはどのようにコンパイルすればよいのですか?

解答方法を教えてください。

少なくとも .java の拡張子をこの行のファイル名に追加してください。

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

から 公式ファック :

クラス名 'HelloWorldApp' は、アノテーション処理が明示的に要求された場合のみ受け付けられます。

このエラーが発生した場合、プログラムをコンパイルする際に接尾辞.javaを付け忘れています。コマンドは javac HelloWorldApp.java であり、javac HelloWorldApp ではありません。

また、2つ目のjavacの例では、(実際には .java を含む必要があります。 すべて コンパイルに必要な.jar-files。