编译我的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
来自official faq:
只有在明确请求注释处理时,才接受类名“HelloWorldApp”
如果收到此错误,则在编译程序时忘记包含.java后缀。请记住,命令是javac HelloWorldApp.java而不是javac HelloWorldApp。
另外,在你的第二个javac例子中(你实际上包含了.java
),你需要包含编译所需的所有必需的.jar文件。
我认为这也是因为编译错误..
所以对于linux(ubuntu).....
javac file.java
java文件
如果将ur文件保存为示例:hello.java和
class 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
我也被这个难倒,因为我包括.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
来运行程序。
错误“只有在明确请求注释处理时才接受类名”可能由以下一个或多个原因引起:
这可能不是导致此错误的完整列表,但这些是我到目前为止所知道的原因。
如何在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
这是因为你没有在.java
结束时指定Main
。
这样做,它的工作原理:
user@defiant /home/user $ javac Main.java
user@defiant /home/user $
现在拍打你的额头,抱怨错误信息是如此神秘。
也许您可能正在使用文件名而不是方法名称进行编译....检查一次我也犯了同样的错误但我很快就纠正了.....#happy Coding
首先从https://www.oracle.com/technetwork/java/javase/downloads/index.html下载jdk。然后在搜索中编辑系统环境变量在打开的窗口中我推底部称为环境变量然后在系统变量中enter image description here推送底部新的在字段中新变量写入“路径”在字段中新值写入目录在文件夹bin中的jdk如“C:\” Program Files \ Java \ jdk1.8.0_191 \ bin“但在我的操作系统中只有这个”C:\ Program Files \ Java \ jdk1.8.0_191 \ bin \ javac.exe“enter image description here按下确定3次
启动Cmd。我推底部窗口+ R.然后写cmd。在cmd中写“cd(你的代码目录)”看起来像C:\ Users \ user \ IdeaProjects \ app \ src。然后写“javac(你的程序的主类的名称).java”看起来像blabla.java和javac在你的目录中创建类似(你的主类的名字).class的字节代码。最后写在cmd“java(你的主类的名字)”和我的程序开始工作