java - 无法运行已编译的java类,错误: Class names are only accepted if annotation processing is explicitly requested

标签 java

好吧,这似乎是 here 中讨论的一个典型错误。 ,但是我仍然不知道我的程序出了什么问题。我使用命令提示符来编译我的 java 类。

TestQueueString.java 是我创建的一个简单的类,用于测试我的实现 QueueStringBlock.java 中队列的 block 表示形式。我就是这样编译的。

C:\Users\ME\Desktop\Lab>javac -cp DAT.jar;Exceptions.jar QueueStringBlock.java TestQueueString.java

C:\Users\ME\Desktop\Lab>javac TestQueueString
error: Class names, 'TestQueueString', are only accepted if annotation processing is
explicitly requested 1 error

如有任何帮助,我们将不胜感激。

编辑

当我使用 java 而不是 javac 时,它总是要求 main 方法,我猜:

C:\Users\TRI\Desktop\Lab>java -cp DAT.jar;Exceptions.jar TestQueueString
Exception in thread "main" java.lang.NoClassDefFoundError: TestQueueString
Caused by: java.lang.ClassNotFoundException: TestQueueString
        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: TestQueueString.  Program will exit.

请注意,它在编译后确实会生成 .class 文件:)

最佳答案

您正在调用编译器javac运行您的程序。您通过 java 运行程序,而不是 javac。你的第二个命令应该是:

java -cp DAT.jar;Exceptions.jar TestQueueString

注意“java”上没有“c”,自从您在编译时添加了类路径以来,我已经添加了它。

<小时/>

重新编辑:问题正如它所说的那样:它找不到类TestQueueString。我可以想到两个可能的原因:

  1. 当前目录不在您的类路径中;尝试:

    java -cp DAT.jar;Exceptions.jar;. TestQueueString
    

    (请注意类路径末尾的 ;.。)

  2. 您的 TestQueueString.java 文件具有 package 声明。如果是这样,您需要告诉 java 类的全名(例如,foo.TestQueueString 而不仅仅是 TestQueueString 如果它位于包 foo),并且该文件必须位于相对于当前工作目录的正确位置(再次假设包 foo,类文件必须位于 foo 子目录)。

鉴于您引用的错误消息,并假设您使用的是最新版本的 Java,我猜测#1,因为#2 会说类似的内容

Exception in thread "main" java.lang.NoClassDefFoundError: TestQueueString (wrong name: foo/TestQueueString)

...(注意“错误名称”位)如果包是 foo

关于java - 无法运行已编译的java类,错误: Class names are only accepted if annotation processing is explicitly requested,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9901818/

相关文章:

java - 将 Activity 的状态保存到名称/或文件

java - 日期寄存器排序算法

java - 没有名为 itmd4515PU 的 EntityManager 持久性提供程序

java - 创建井字游戏动画

java - 声明输入流

java - 如何更改所有按钮的背景颜色?

java - 在某些条件下无法停止递归

java - 如何使用泛型将一个 RecyclerView 适配器用于不同类型的对象?

java - App Engine + 云数据存储性能 : order in query or in memory?

java - 使用 try-with-resources 悄悄关闭资源