Ich erhalte diese Fehlermeldung, wenn ich mein Java-Programm kompiliere:
error: Class names, 'EnumDevices', are only accepted if annotation
processing is explicitly requested
1 error
Hier ist der Java-Code (ich verwende diesen unter 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);
}
}
}
Hier ist der Befehl javac:
javac -cp /home/manish.yadav/Desktop/JCuda-All-0.3.2-bin-linux-x86_64 EnumDevices
Wie kompiliere ich dieses Programm?
.class
beim Start mit weggelassen werden solltejava
).Das hat mich auch verblüfft, weil ich die .Java-Erweiterung aufgenommen habe ... dann habe ich die Hauptstadt J bemerkt.
Dies führt auch zu dem Fehler "Anmerkungsverarbeitung":
Stattdessen sollte es sein:
quelle
Verwenden Sie javac ClassName.java , um das Programm zu kompilieren, und verwenden Sie dann java ClassName , um den kompilierten Code auszuführen. Sie können Javac nicht nur mit dem Klassennamen mischen (ohne die Java-Erweiterung).
quelle
Der Fehler "Klassennamen werden nur akzeptiert, wenn die Annotationsverarbeitung explizit angefordert wird" kann durch eine oder mehrere der folgenden Ursachen verursacht werden:
Dies ist möglicherweise nicht die vollständige Liste der Ursachen für diesen Fehler, aber dies sind die Ursachen, die mir bisher bekannt sind.
quelle
Wenn Sie also nach dem erneuten Kompilieren versehentlich
javac
zum Ausführen eines Programms verwenden.quelle
Ich habe erfahren, dass Sie diesen Fehler auch erhalten können, indem Sie die Quelldatei in einem Ordner namens Java speichern
quelle
Ich denke, das liegt auch an der falschen Kompilierung.
also für linux (ubuntu) .....
javac file.java
Java-Datei
quelle
So können Sie diesen kryptischen Fehler auf dem Ubuntu-Terminal reproduzieren:
Fügen Sie dies in eine Datei namens Main.java ein:
Dann kompiliere es so:
Es ist, weil Sie
.java
am Ende nicht angegeben habenMain
.Mach es so und es funktioniert:
Schlagen Sie jetzt auf die Stirn und meckern Sie, dass die Fehlermeldung so kryptisch ist.
quelle
Vielleicht kompilieren Sie mit dem Dateinamen anstelle des Methodennamens .... Überprüfen Sie, ob auch ich den gleichen Fehler gemacht habe, ihn aber schnell korrigiert habe ..... # happy Coding
quelle
Laden Sie zuerst jdk von https://www.oracle.com/technetwork/java/javase/downloads/index.html herunter . Dann in der Suche schreiben Bearbeiten Sie die Systemumgebungsvariablen In geöffnetem Fenster drücke ich unten genannt Umgebungsvariablen Dann geben Sie in Systemvariablen hier Bildbeschreibung ein Push unten neu In Feld neue Variablen schreiben "Pfad" In Feld neuer Wert Schreiben Sie Verzeichnis in Ordner bin in jdk like " C: \ Programme \ Java \ jdk1.8.0_191 \ bin ", aber in meinem Betriebssystem funktioniert nur dieses" C: \ Programme \ Java \ jdk1.8.0_191 \ bin \ javac.exe ". Geben Sie hier die Bildbeschreibung ein und drücken Sie dreimal OK
Starten Sie Cmd. Ich drücke die unteren Fenster + R. Dann schreibe ich cmd. In cmd schreibt "cd (Ihr Verzeichnis mit Code)" wie C: \ Users \ user \ IdeaProjects \ app \ src. Dann schreiben Sie "javac (Name Ihrer Hauptklasse für Ihr Programm) .java" sieht aus wie blabla.java und javac erstellen Bytecode wie (Name Ihrer Hauptklasse) .class in Ihrem Verzeichnis. Schreibe zuletzt in cmd "java (Name deiner Hauptklasse)" und mein Programm startet die Arbeit
quelle
Um diesen Fehler zu vermeiden, sollten Sie den Befehl javac mit der Erweiterung .java verwenden.
Javac DescendingOrder.java <- das funktioniert perfekt.
quelle
Wenn Sie mehrere Dateien in derselben Zeile kompilieren, stellen Sie sicher, dass Sie javac nur einmal und nicht für jede Klassendatei verwenden.
Falsch:
Richtig:
quelle