Ошибка javac: имена классов принимаются только в том случае, если явно запрашивается обработка аннотации - PullRequest
88 голосов
/ 21 февраля 2011

Я получаю эту ошибку при компиляции своей 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

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

Ответы [ 13 ]

97 голосов
/ 21 февраля 2011

Вам по крайней мере необходимо добавить расширение .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-файлы, необходимые для компиляции.

13 голосов
/ 31 августа 2013

Я тоже был озадачен этим, потому что я включал расширение .Java ... тогда я заметил заглавную букву J.

Это также приведет к ошибке «обработка аннотации»:

javac myclass.Java 

Вместо этого должно быть:

javac myclass.java 
4 голосов
/ 06 июня 2016

Используя javac ClassName.java для компиляции программы, затем используйте java ClassName для выполнения скомпилированного кода.Вы не можете смешивать javac только с ClassName (без расширения java).

3 голосов
/ 02 сентября 2017

Я узнал, что вы также можете получить эту ошибку, сохранив исходный файл в папке с именем Java

1 голос
/ 09 ноября 2015
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 для запуска программы.

0 голосов
/ 06 июля 2019

я думаю, это также из-за неправильной компиляции ..

так для linux (ubuntu) .....

javac file.java

java file

0 голосов
/ 15 июня 2019

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

Чтобы избежать этой ошибки, вы должны использовать команду javac с расширением .java.

Javac DescendingOrder.java <- отлично работает. </p>

0 голосов
/ 02 апреля 2019

сначала загрузите jdk из https://www.oracle.com/technetwork/java/javase/downloads/index.html. Затем в поиске напишите Редактировать системные переменные среды В открывшемся окне я нажимаю нижнюю часть, называемую переменными среды Затем в системных переменных введите описание изображения здесь Нажмите нижнюю часть нового в поленовые переменные пишут «Путь» В поле новое значение Записать каталог в папку bin в jdk как «C: \ Program Files \ Java \ jdk1.8.0_191 \ bin», но в моей ОС работает только этот «C: \ Program Files \ Java \»jdk1.8.0_191 \ bin \ javac.exe " введите описание изображения здесь нажмите ОК 3 раза

Запустите Cmd.Я нажимаю нижние окна + R. Затем напишите cmd.В cmd напишите «cd (ваш каталог с кодом)», выглядит как C: \ Users \ user \ IdeaProjects \ app \ src.Затем напишите «javac (имя вашего основного класса для вашей программы) .java» выглядит как blabla.java, а javac создает байт-код, похожий на (имя вашего основного класса) .class в вашем каталоге.в последний раз напишите в cmd «java (имя вашего основного класса)» и моя программа начнет работать

0 голосов
/ 13 июля 2018

вы просматриваете путь javac.exe и java.exe

D: \ Test> "C: \ jdk1.7.0_80 \ bin \ javac.exe" TestMain.java D: \ Test> "C: \ jdk1.7.0_80 \ bin \ java.exe" TestMain.java

0 голосов
/ 23 апреля 2018

Возможно, вы компилируете с именем файла, а не с именем метода .... Проверьте, однажды я тоже совершил ту же ошибку, но исправил ее быстро ..... # happy Coding

...