web-dev-qa-db-ja.com

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

このプログラムをどのようにコンパイルしますか?

88
user513164

少なくとも、次の行のファイル名に.Java拡張子を追加する必要があります。

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

公式FAQ から:

クラス名「HelloWorldApp」は、注釈処理が明示的に要求された場合にのみ受け入れられます

このエラーを受け取った場合、プログラムのコンパイル時に.Javaサフィックスを含めるのを忘れていました。コマンドはjavac HelloWorldAppではなくjavac HelloWorldApp.Javaであることに注意してください。

また、2番目のjavac-example(実際に.Javaをインクルードした)には、コンパイルに必要なall必要な.jarファイルを含める必要があります。

97
aioobe

.Java拡張子を含めていたため、これにも困惑していました...大文字のJに気付きました。

これにより、「annotaion processing」エラーも発生します。

javac myclass.Java 

代わりに、次のようになります。

javac myclass.Java 
13
Tom Warfield

javac ClassName.Javaを使用してプログラムをコンパイルし、次にJava ClassNameを使用してコンパイルされたコードを実行します。 javacとClassNameのみ(Java拡張子なし)を混在させることはできません。

4
Yong Yuan

ソースファイルをJavaという名前のフォルダーに保存することで、このエラーが発生することもあります。

3
David Miller
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を使用してください。

1
chandan

「クラス名は、注釈処理が明示的に要求された場合にのみ受け入れられます」というエラーは、次の1つ以上が原因で発生する可能性があります。

  1. コンパイル時にJavaファイルに.Java拡張子を使用していません。
  2. コンパイル時の.Java拡張子(つまり.Java)の大文字化が不適切です。
  3. コンパイル時の.Java拡張子の他のタイプミス。
  4. コンパイルと実行を同時に行う場合、「&&」を使用して2つのコマンドを連結することを忘れます(つまり、javac Hangman.Java java Hangman)。これを理解するのに30分ほどかかりましたが、コンパイルとプログラムを別々に実行することで気付きましたが、もちろん完璧に機能しました。

これはこのエラーの原因の完全なリストではないかもしれませんが、これらは私がこれまでに知っている原因です。

0
joshgoldeneagle

これもコンパイルが正しくないためだと思います。

linux(ubuntu)の場合...

javacファイル。Java

Javaファイル

0
Amol Jagdale

buntuターミナルでこの不可解なエラーを再現する方法:

これを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

Mainの最後に.Javaを指定しなかったためです。

このようにしてください、そしてそれは動作します:

user@defiant /home/user $ javac Main.Java
user@defiant /home/user $

今すぐ額をたたいて、エラーメッセージが非常にわかりにくいと不平を言ってください。

0
Eric Leschinski

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

このエラーを回避するには、javacコマンドと.Java拡張子を使用する必要があります。

Javac DescendingOrder.Java <-これは完全に機能します。

0
Avnish

最初に https://www.Oracle.com/technetwork/Java/javase/downloads/index.html からjdkをダウンロードします。次に、検索で書き込みシステム環境変数を編集します開いているウィンドウでi環境変数と呼ばれる一番下を押します次にシステム変数で ここに画像の説明を入力します 一番下を押します「C:\ Program Files\Java\jdk1.8.0_191\bin」のようなjdkのフォルダーbinにありますが、私のOSではこの「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(メインクラスの名前)"で書き込み、プログラムが動作を開始します

0
Mr tintin

おそらく、メソッド名の代わりにファイル名でコンパイルしているのかもしれません。

0
Sai Saran