Error javac: los nombres de clases solo se aceptan si el proceso de anotación se solicita explícitamente

Me sale este error cuando compilo mi progtwig java:

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

Aquí está el código de Java (estoy ejecutando esto en 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); } } } 

Aquí está el comando javac:

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

¿Cómo compilo este progtwig?

Al menos necesita agregar la extensión .java al nombre del archivo en esta línea:

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

De las preguntas frecuentes oficiales :

Los nombres de clase, ‘HelloWorldApp’, solo se aceptan si el proceso de anotación se solicita explícitamente

Si recibe este error, olvidó incluir el sufijo .java al comstackr el progtwig. Recuerde, el comando es javac HelloWorldApp.java not javac HelloWorldApp.

Además, en su segundo ejemplo de javac, (en el que incluyó realmente .java ), debe incluir todos los archivos .jar necesarios para la comstackción.

También me quedé perplejo porque incluía la extensión .Java … luego noté la capital J.

Esto también causará el error de “procesamiento de anotación”:

 javac myclass.Java 

En cambio, debería ser:

 javac myclass.java 

Usando javac ClassName.java para comstackr el progtwig, entonces use java ClassName para ejecutar el código comstackdo. No puede mezclar javac con ClassName solamente (sin la extensión java).

Aprendí que también puedes obtener este error almacenando el archivo fuente en una carpeta llamada Java

El error “Los nombres de clase solo se aceptan si el proceso de anotación se solicita explícitamente” puede deberse a uno o más de los siguientes:

  1. No utiliza la extensión .java para su archivo java al comstackr.
  2. Capitalización incorrecta de la extensión .java (es decir, Java) al comstackr.
  3. Cualquier otro error tipográfico en la extensión .java al comstackr.
  4. Al comstackr y ejecutar al mismo tiempo, olvidándose de usar ‘&&’ para concatenar los dos comandos (es decir, javac Hangman.java java Hangman). Me llevó como 30 minutos resolver esto, lo cual noté al ejecutar la comstackción y ejecutar el progtwig por separado, lo que por supuesto funcionó perfectamente bien.

Puede que esta no sea la lista completa de las causas de este error, pero estas son las causas que conozco hasta ahora.

Cómo puedes reproducir este error críptico en la terminal de Ubuntu:

Pon esto en un archivo llamado Main.java:

 public Main{ public static void main(String[] args){ System.out.println("ok"); } } 

Entonces comstackrlo así:

 user@defiant /home/user $ javac Main error: Class names, 'Main', are only accepted if annotation processing is explicitly requested 1 error 

Es porque no especificaste .java al final de Main .

Hazlo así, y funciona:

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

Golpee su frente ahora y refunfuña que el mensaje de error es tan críptico.

 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 

Entonces, si por error después de comstackr de nuevo, use javac para ejecutar un progtwig.

Tal vez puedas estar comstackndo con el nombre del archivo en lugar del nombre del método … Comprueba una vez que yo también cometí el mismo error pero lo corregí rápidamente ….. # happy Coding

Si tu archivo se guarda como ejemplo: hello.java y

Ejemplo de clase. Haz esto en cmd

javac hello.java

ejemplo java

Eso funciona.

revisas la ruta javac.exe y 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