ошибка 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


как мне скомпилировать эту программу?

716   10  

10 ответов:

вам по крайней мере нужно добавить .java расширение имени файла в этой строке:

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

С официальный faq:

имена классов, '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

ошибка "имена классов принимаются только при явном запросе обработки аннотаций" может быть вызвана одним или несколькими из следующих факторов:

  1. не используется .расширение java для вашего файла java при компиляции.
  2. неправильная капитализация .расширение java (т. е.Ява) при компиляции.
  3. любая другая опечатка .расширение Java при компиляции.
  4. при компиляции и запуске одновременно, забывая использовать '& & ' для объедините две команды (т. е. 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

    Ничего не найдено.