[英]Cannot run compiled java class, error: Class names are only accepted if annotation processing is explicitly requested
[英]javac error: Class names are only accepted if annotation processing is explicitly requested
編譯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
來自官方常見問題解答:
類名稱“HelloWorldApp”僅在明確請求注釋處理時才被接受
如果您收到此錯誤,則您在編譯程序時忘記包含 .java 后綴。 請記住,命令是 javac HelloWorldApp.java 而不是 javac HelloWorldApp。
此外,在您的第二個 javac 示例中(您實際上包含了.java
),您需要包含編譯所需的所有必需的 .jar 文件。
我也被這個難住了,因為我包含了 .Java 擴展名……然后我注意到了大寫的 J。
這也會導致“注釋處理”錯誤:
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
來運行程序。
編譯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
如何編譯該程序?
如何在 Ubuntu 終端上重現這個神秘的錯誤:
把它放在一個名為 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 $
現在拍拍你的額頭,抱怨錯誤信息太神秘了。
也許您可能正在使用文件名而不是方法名進行編譯....檢查一次我也犯了同樣的錯誤,但我很快糾正了.....#happy Coding
首先從https://www.oracle.com/technetwork/java/javase/downloads/index.html下載 jdk。 然后在搜索中寫入編輯系統環境變量在打開的窗口中我推底部稱為環境變量然后在系統變量中輸入圖像描述在這里推底部新在字段新變量中寫入“路徑”在字段中寫入新值在 jdk 中的文件夾 bin 中寫入目錄,如“ C:\\ Program Files文件\\的Java \\ jdk1.8.0_191 \\ BIN”,但在我的OS的工作只有這個“C:\\ Program Files文件\\的Java \\ jdk1.8.0_191 \\ BIN \\的javac.exe”進入的形象在這里說明按OK 3倍
啟動命令。 我推底部窗口 + R。然后寫 cmd。 在 cmd 中寫“cd(你的代碼目錄)”看起來像 C:\\Users\\user\\IdeaProjects\\app\\src。 然后編寫“javac(您的程序的主類的名稱)”。java 看起來像 blabla.java 和 javac 在您的目錄中創建字節碼(您的主類的名稱)。 最后在cmd中寫入“java(您的主類的名稱)”,我的程序開始工作
我從 Maven 項目創建了一個 jar 文件(通過編寫mvn package或mvn install )
之后我打開 cmd ,移動到 jar 方向,然后
運行此代碼
java -cp FILENAME.jar package.Java-Main-File-Name-Class
編輯:在放入 Pom 文件后聲明主要運行代碼:
java -jar FILENAME.JAR
如果將您的文件保存為示例:hello.java和
類Example.cmd中執行此操作
javac hello.java
Java示例
這樣可行。
您查看路徑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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.