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
我如何编译这个程序?
您至less需要将.java
扩展名添加到此行的文件名中:
javac -cp /home/manish.yadav/Desktop/JCuda-All-0.3.2-bin-linux-x86_64 EnumDevices
从官方faq :
类名“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的文件夹中来得到这个错误
如何在Ubuntuterminal上重现这个神秘的错误:
把它放在一个名为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 $
现在打你的额头,抱怨错误信息是如此神秘。
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扩展名
我已经做了一个脚本(一个bash别名)以最基本的方式执行编译器。 我使用它在原型devise项目结构时,在Linux(Debian 9)的terminal上使用vim查看模式和简单的东西。 老实说有些时候我觉得比使用低内存的电脑更适合使用ide,而我只需要一个文本编辑器。
https://github.com/Karmavil/bash_aliases
随意贡献改进或与其他平台的新分支…这只是一个基本的脚本
如果错误“只有明确请求注解处理才接受类名称”,则可能由以下一个或多个因素引起:
- 在编译时不要使用.java扩展名。
- .java扩展(即.Java)在编译时大小写不正确。
- 编译时.java扩展名中的任何其他拼写错误。
- 在编译和运行的同时,忘记使用'&&'连接两个命令(即javac hangman.java java hangman)。 我花了30分钟才弄明白了这一点,通过运行编译程序和单独运行程序,我注意到了这一点,这当然工作得很好。
这可能不是这个错误的原因的完整列表,但是这些是我迄今为止知道的原因。
如果你的ur文件被保存为例:hello.java和
class Example.Do this in cmd
javac hello.java
java示例
这样可行。