wingstop vales vale tarjetahabiente tarjeta sivale savale saldo oficinas gift consulta centro card atencion acepta java javac

java - tarjetahabiente - vales



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

Me sale este error cuando compilo mi programa 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 programa?


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 compilar el programa. 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 compilación.


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 compilar.
  2. Capitalización incorrecta de la extensión .java (es decir, Java) al compilar.
  3. Cualquier otro error tipográfico en la extensión .java al compilar.
  4. Al compilar 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 compilación y ejecutar el programa 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.


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

Ejemplo de clase. Haz esto en cmd

javac hello.java

ejemplo java

Eso funciona.


Tal vez puedas estar compilando 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


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 compilar el programa, entonces use java ClassName para ejecutar el código compilado. No puede mezclar javac con ClassName solamente (sin la extensión java).


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 compilarlo 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 compilar de nuevo, use javac para ejecutar un programa.