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
このプログラムをどのようにコンパイルしますか?
少なくとも、次の行のファイル名に.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ファイルを含める必要があります。
.Java拡張子を含めていたため、これにも困惑していました...大文字のJに気付きました。
これにより、「annotaion processing」エラーも発生します。
javac myclass.Java
代わりに、次のようになります。
javac myclass.Java
javac ClassName.Javaを使用してプログラムをコンパイルし、次にJava ClassNameを使用してコンパイルされたコードを実行します。 javacとClassNameのみ(Java拡張子なし)を混在させることはできません。
ソースファイルをJavaという名前のフォルダーに保存することで、このエラーが発生することもあります。
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つ以上が原因で発生する可能性があります。
これはこのエラーの原因の完全なリストではないかもしれませんが、これらは私がこれまでに知っている原因です。
これもコンパイルが正しくないためだと思います。
linux(ubuntu)の場合...
javacファイル。Java
Javaファイル
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 $
今すぐ額をたたいて、エラーメッセージが非常にわかりにくいと不平を言ってください。
最初に 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(メインクラスの名前)"で書き込み、プログラムが動作を開始します
おそらく、メソッド名の代わりにファイル名でコンパイルしているのかもしれません。