[java] javac 오류 : 주석 처리가 명시 적으로 요청 된 경우에만 클래스 이름이 허용됩니다.

Java 프로그램을 컴파일 할 때이 오류가 발생합니다.

error: Class names, 'EnumDevices', are only accepted if annotation
processing is explicitly requested
1 error

다음은 자바 코드입니다 (우분투에서 실행 중입니다).

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

이 프로그램을 어떻게 컴파일합니까?



답변

최소한 .java다음 줄의 파일 이름에 확장자 를 추가해야합니다 .

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

로부터 공식 자주 묻는 질문 :

클래스 이름 ‘HelloWorldApp’은 주석 처리가 명시 적으로 요청 된 경우에만 허용됩니다.

이 오류가 발생하면 프로그램을 컴파일 할 때 .java 접미사를 포함하지 않은 것입니다. 명령은 javac HelloWorldApp이 아니라 javac HelloWorldApp.java입니다.

또한 두 번째 javac-example (실제로 포함 .java)에는 컴파일에 필요한 모든 필수 .jar- 파일 을 포함해야합니다 .


답변

.Java 확장자를 포함하고 있었기 때문에 이것도 당황했습니다. 그리고 대문자 J를 발견했습니다.

이로 인해 “주석 처리”오류도 발생합니다.

javac myclass.Java 

대신 다음과 같아야합니다.

javac myclass.java 


답변

사용 javac의의 ClassName.java을 프로그램을 컴파일하려면, 다음 사용하는 자바 클래스 이름을 컴파일 된 코드를 실행합니다. javac와 ClassName 만 함께 사용할 수 없습니다 (Java 확장없이).


답변

다음 중 하나 이상으로 인해 “주석 처리가 명시 적으로 요청 된 경우에만 클래스 이름이 허용됩니다.”오류가 발생할 수 있습니다.

  1. 컴파일 할 때 Java 파일에 .java 확장자를 사용하지 않습니다.
  2. 컴파일시 .java 확장자 (예 : .Java)의 대소 문자가 잘못되었습니다.
  3. 컴파일 할 때 .java 확장자의 다른 오타.
  4. 컴파일하고 동시에 실행할 때 ‘&&’를 사용하여 두 명령을 연결하는 것을 잊었습니다 (예 : javac Hangman.java java Hangman). 이것을 알아내는 데 30 분 정도 걸렸는데, 컴파일을 실행하고 프로그램을 개별적으로 실행했을 때 알 수 있었는데, 물론 완벽하게 작동했습니다.

이것은이 오류의 전체 원인 목록이 아닐 수 있지만 지금까지 내가 알고있는 원인입니다.


답변

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로 프로그램을 실행하는 데 사용하십시오 .


답변

Java라는 폴더에 소스 파일을 저장하여이 오류가 발생할 수도 있음을 배웠습니다.


답변

이것은 또한 잘못된 컴파일 때문이라고 생각합니다 ..

그래서 리눅스 (ubuntu) …..

javac file.java

자바 파일