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:
- No utiliza la extensión .java para su archivo java al compilar.
- Capitalización incorrecta de la extensión .java (es decir, Java) al compilar.
- Cualquier otro error tipográfico en la extensión .java al compilar.
- 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.