java - 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
我该如何编译这个程序?
user513164 asked 2019-04-15T09:04:59Z
10个解决方案
85 votes
您至少需要在此行中添加.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文件。
aioobe answered 2019-04-15T09:05:40Z
11 votes
我也被这个难倒,因为我包括.Java扩展......然后我注意到了首都J.
这也会导致“注释处理”错误:
javac myclass.Java
相反,它应该是:
javac myclass.java
Tom Warfield answered 2019-04-15T09:06:18Z
4 votes
使用javac ClassName.java编译程序,然后使用java ClassName执行编译的代码。 你不能只将javac与ClassName混合(没有java扩展名)。
Yong Yuan answered 2019-04-15T09:06:42Z
3 votes
我了解到,通过将源文件存储在名为Java的文件夹中,您也可以获得此错误
David Miller answered 2019-04-15T09:07:06Z
0 votes
错误“只有在明确请求注释处理时才接受类名”可能由以下一个或多个原因引起:
编译时不使用.java扩展名作为java文件。
编译时.java扩展名(即.Java)的大写不正确。
编译时.java扩展名中的任何其他拼写错误。
在同时编译和运行时,忘记使用'&amp;&amp;' 连接两个命令(即javac Hangman.java java Hangman)。 我花了30分钟来解决这个问题,我通过运行编译和单独运行程序注意到这一点,当然这完全没问题。
这可能不是导致此错误的完整列表,但这些是我到目前为止所知道的原因。
joshgoldeneagle answered 2019-04-15T09:08:05Z
0 votes
如何在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 $
现在拍打你的额头,抱怨错误信息是如此神秘。
Eric Leschinski answered 2019-04-15T09:09:05Z
0 votes
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来运行程序。
chandan answered 2019-04-15T09:09:31Z
0 votes
也许您可能正在使用文件名而不是方法名称进行编译....检查一次我也犯了同样的错误但我很快就纠正了.....#happy Coding
Sai Saran answered 2019-04-15T09:09:58Z
-2 votes
如果将ur文件保存为示例:hello.java和
class Example.在cmd中执行此操作
javac hello.java
java示例
这样可行。
awuah answered 2019-04-15T09:10:53Z
-2 votes
您查看路径javac.exe和java.exe
D:\ Test&gt;“C:\ jdk1.7.0_80 \ bin \ javac.exe”TestMain.javaD:\ Test&gt;“C:\ jdk1.7.0_80 \ bin \ java.exe”TestMain.java
hnx answered 2019-04-15T09:11:26Z