ошибка javac: имена классов принимаются только при явном запросе обработки аннотаций
Я получаю эту ошибку при компиляции моей программы java:
error: Class names, 'EnumDevices', are only accepted if annotation
processing is explicitly requested
1 error
вот код java (я запускаю это на 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);
}
}
}
вот команда javac:
javac -cp /home/manish.yadav/Desktop/JCuda-All-0.3.2-bin-linux-x86_64 EnumDevices
как мне скомпилировать эту программу?
10 ответов:
вам по крайней мере нужно добавить
.javaрасширение имени файла в этой строке:javac -cp /home/manish.yadav/Desktop/JCuda-All-0.3.2-bin-linux-x86_64 EnumDevicesимена классов, 'HelloWorldApp', принимаются только в том случае, если обработка аннотаций явно запрашивается
Если вы получаете эту ошибку, вы забыли включить .суффикс java при компиляции программы. Помните, что команда javac HelloWorldApp.java не javac HelloWorldApp.
кроме того, в вашем втором javac-примере (в который вы фактически включили
.java) вы должны включить все требуются .JAR-файлы, необходимые для компиляции.
Я был озадачен этим, потому что я был в том числе .Расширения Java ... тогда я заметил столицу J.
Это также приведет к ошибке "обработка аннотации":
javac myclass.Javaвместо этого должно быть:
javac myclass.java
используя имя класса javac.java для компиляции программы, тогда используйте java ClassName для выполнения скомпилированного кода. Вы не можете смешивать javac только с именем класса (без расширения java).
ошибка "имена классов принимаются только при явном запросе обработки аннотаций" может быть вызвана одним или несколькими из следующих факторов:
- не используется .расширение java для вашего файла java при компиляции.
- неправильная капитализация .расширение java (т. е.Ява) при компиляции.
- любая другая опечатка .расширение Java при компиляции.
- при компиляции и запуске одновременно, забывая использовать '& & ' для объедините две команды (т. е. javac Hangman.Java java Hangman). Мне потребовалось около 30 минут, чтобы понять это, что я заметил, запустив компиляцию и запустив программу отдельно, что, конечно же, отлично работало.
Это может быть не полный список причин этой ошибки, но это причины, о которых я знаю до сих пор.
как вы можете воспроизвести эту загадочную ошибку на терминале Ubuntu:
поместите это в файл с именем Main.java:
public Main{ public static void main(String[] args){ System.out.println("ok"); } }затем скомпилируйте его следующим образом:
user@defiant /home/user $ javac Main error: Class names, 'Main', are only accepted if annotation processing is explicitly requested 1 errorЭто потому, что вы не указали
.javaВ концеMain.сделайте это так, и это работает:
user@defiant /home/user $ javac Main.java user@defiant /home/user $хлопните себя по лбу и ворчите, что сообщение об ошибке настолько загадочно.
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Так что если вы по ошибке после компиляции использовать
javacдля запуска программы.
возможно, вы компилируете с именем файла вместо имени метода....Проверьте, как только я тоже сделал ту же ошибку, но я быстро исправил ее .....# счастливое кодирование
Если файл ur сохранен в качестве примера: привет.java и
класс Example.Do это в cmd
javac и привет.java
java пример
Это работает.
вы просматриваете путь javac.exe и java.exe
D:\Test>"C:\jdk1.7.0_80\bin\javac.exe " TestMain.Ява D:\Test>"C:\jdk1.7.0_80\bin\java.exe " TestMain.java
Comments