Подтвердить что ты не робот

Javac error: имена классов принимаются только в том случае, если обработка аннотации явно запрашивается

Я получаю эту ошибку, когда компилирую свою 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

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

4b9b3361

Ответ 1

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

Ответ 2

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

Это также вызовет ошибку "обработка аннотации":

javac myclass.Java 

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

javac myclass.Java 

Ответ 3

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

Ответ 4

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

Ответ 5

[email protected]:~/More$ javac New.java
[email protected]:~/More$ javac New
error: Class names, 'New', are only accepted if annotation processing is explicitly requested
1 error

Итак, если вы по ошибке после компиляции снова используете javac для запуска программы.

Ответ 6

Как вы можете воспроизвести эту загадочную ошибку на терминале Ubuntu:

Поместите это в файл Main.java:

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

Затем скомпилируйте его следующим образом:

[email protected] /home/user $ javac Main
error: Class names, 'Main', are only accepted if 
annotation processing is explicitly requested
1 error

Это потому, что вы не указали .java в конце Main.

Сделайте это так, и он работает:

[email protected] /home/user $ javac Main.java
[email protected] /home/user $

Теперь сломайте лоб и ворчите, что сообщение об ошибке настолько загадочно.

Ответ 7

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

  • Не использовать расширение .java для вашего java файла при компиляции.
  • Неправильная капитализация расширения .java(т.е. Java) при компиляции.
  • Любая другая опечатка в расширении .java при компиляции.
  • При компиляции и запуске в одно и то же время, забывая использовать '& &' для объединения двух команд (т.е. javac Hangman.java java Hangman). Мне понадобилось 30 минут, чтобы понять это, что я заметил, запустив компиляцию и управляя программой отдельно, что, конечно же, отлично работало.

Это не может быть полный список причин этой ошибки, но это те причины, о которых я знаю до сих пор.

Ответ 8

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

Ответ 9

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

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

Ответ 10

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

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

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

Ответ 11

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

так для линукса (убунту).....

javac file.java

Java файл

Ответ 12

Если файл ur сохранен в качестве примера: hello.java и

class Example. Это в cmd

javac hello.java

java Пример

Это работает.

Ответ 13

вы просматриваете путь 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