web-dev-qa-db-fra.com

erreur javac: les noms de classe ne sont acceptés que si le traitement des annotations est explicitement demandé

Je reçois cette erreur lorsque je compile mon programme Java: 

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

Voici le code Java (je l’utilise sur 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);
        }
    }
}

Voici la commande javac:

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

Comment compiler ce programme?

81
user513164

Vous devez au moins ajouter l'extension .Java au nom du fichier dans cette ligne:

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

De la FAQ officielle :

Les noms de classe, 'HelloWorldApp', ne sont acceptés que si le traitement des annotations est explicitement demandé

Si vous recevez cette erreur, vous avez oublié d'inclure le suffixe .Java lors de la compilation du programme. Rappelez-vous que la commande est javac HelloWorldApp.Java pas javac HelloWorldApp. 

De plus, dans votre deuxième exemple javac (dans lequel vous avez réellement inclus .Java), vous devez inclure les fichiers tous requis .jar. Nécessaires à la compilation. 

91
aioobe

Cela aussi m'a troublé parce que j'y ai inclus l'extension .Java ... puis j'ai remarqué le J majuscule.

Cela provoquera également l'erreur "Annotaion Processing":

javac myclass.Java 

Au lieu de cela, il devrait être:

javac myclass.Java 
11
Tom Warfield

En utilisant javac ClassName.Java pour compiler le programme, Utilisez ensuite Java ClassName pour exécuter le code compilé. Vous ne pouvez pas mélanger javac avec le ClassName uniquement (sans l'extension Java).

4
Yong Yuan

J'ai appris que vous pouvez également obtenir cette erreur en stockant le fichier source dans un dossier nommé Java.

3
David Miller

je pense que c'est aussi à cause d'une compilation incorrecte ..

donc pour linux (Ubuntu) .....

javac fichier.Java

Fichier java

1
Amol Jagdale
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

Donc, si par erreur après la nouvelle compilation, utilisez javac pour exécuter un programme.

1
chandan

L'erreur "Les noms de classe ne sont acceptés que si le traitement des annotations est explicitement demandé" peut être provoquée par un ou plusieurs des problèmes suivants:

  1. N'utilisez pas l'extension .Java pour votre fichier Java lors de la compilation.
  2. Capitalisation incorrecte de l'extension .Java (c'est-à-dire. Java) lors de la compilation.
  3. Toute autre faute de frappe dans l'extension .Java lors de la compilation.
  4. Lors de la compilation et de l'exécution simultanées, oubliez d'utiliser "&&" pour concaténer les deux commandes (par exemple, javac Hangman.Java java Hangman). Cela m'a pris environ 30 minutes pour le comprendre, ce que j'ai remarqué en exécutant la compilation et en exécutant le programme séparément, ce qui a bien sûr fonctionné parfaitement. 

Ce n'est peut-être pas la liste complète des causes de cette erreur, mais ce sont les causes dont je suis au courant jusqu'à présent.

0
joshgoldeneagle

Comment reproduire cette erreur cryptique sur le terminal Ubuntu:

Mettez ceci dans un fichier appelé Main.Java:

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

Puis compilez-le comme ceci:

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

C'est parce que vous n'avez pas spécifié .Java à la fin de Main

Faites-le comme ça, et ça marche:

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

Frappez votre front maintenant et murmurez que le message d'erreur est tellement cryptique.

0
Eric Leschinski

Error : class name only accepted if annotation processing is explicitly request

Pour éviter cette erreur, vous devez utiliser la commande javac avec l'extension .Java.

Javac DescendingOrder.Java <- cela fonctionne parfaitement.

0
Avnish

premier téléchargement jdk à partir de https://www.Oracle.com/technetwork/Java/javase/downloads/index.html . Puis, dans la recherche, écrivez Modifier les variables d’environnement système Dans la fenêtre ouverte i Appuyez en bas sur les variables d’environnement, puis dans Variables système entrez la description d’image ici Appuyez en bas sur le nouveau champ dans la nouvelle variable écrivez "Path" Dans le champ nouvelle valeur, écrivez le répertoire dans le dossier dans jdk comme "C:\Program Files\Java\jdk1.8.0_191\bin" mais dans mon système d'exploitation ne fonctionne que "C:\Program Files\Java\jdk1.8.0_191\bin\javac.exe" enter image description ici appuyez sur ok 3 fois

Démarrer Cmd. I Push Windows bas + R. Ensuite, écrivez cmd. Dans cmd, écrivez "cd (votre répertoire avec le code)" ressemble à C:\Utilisateurs\utilisateur\IdeaProjects\app\src. Ensuite, écrivez "javac (nom de votre classe principale pour votre programme) .Java" qui ressemble à blabla.Java et javac créent un code octet comme (nom de votre classe principale) .class dans votre répertoire. Dernière écriture dans cmd "Java (nom de votre classe principale)" et mon programme démarre

0
Mr tintin

Peut-être que vous êtes en train de compiler avec un nom de fichier au lieu d'un nom de méthode .... Vérifiez une fois que j'ai moi aussi fait la même erreur mais je l'ai corrigé rapidement ... # codage

0
Sai Saran