Java - NoClassDefFoundError虽然该类存在

时间:2012-02-06 07:03:39

标签: java class

我还是Java新手。我正在尝试使用CMU的Sphinx4语音识别。当我使用他们准备好的编译过程时,一切正常。但是,现在我正在尝试单独编译自己的代码,我遇到了一个问题。

在代码源文件(src /)中存在一个apps /目录,其中包含我正在尝试手动编译的演示,以及包含要使用的主要功能的sphinx4 /目录。为了编译代码,我移动到apps /目录并运行  javac -classpath ../sphinx4/ edu/cmu/sphinx/demo/helloworld/HelloWorld.java。这编译没有错误。但是,当我尝试使用java edu/cmu/sphinx/demo/helloworld/HelloWorld运行新创建的类时,结果为:

Exception in thread "main" java.lang.NoClassDefFoundError: edu/cmu/sphinx/util/props/ConfigurationManager
    at edu.cmu.sphinx.demo.helloworld.HelloWorld.main(HelloWorld.java:33)
Caused by: java.lang.ClassNotFoundException: edu.cmu.sphinx.util.props.ConfigurationManager
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
    ... 1 more

然而,据我所知,班级确实存在于应有的位置。 src / sphinx4 / edu / cmu / sphinx / util / props / ConfigurationManager.class存在。我猜有一个很好的理由,它被认为是没有找到它,但我只是不知道它,因为我还不太了解Java。可能导致这种情况发生的原因是什么?

感谢您的时间!

3 个答案:

答案 0 :(得分:3)

两个问题:

  • 您需要在运行时以及编译时指定类路径
  • 您需要指定要运行的类名;
  • 中不会有斜杠

你想:

java -classpath .:../sphinx4 edu.cmu.sphinx.demo.helloworld.HelloWorld

使用“;”如果你在Windows上运行,而不是“:”。

(您的错误消息表明您实际上 提供了正确的班级名称,在这种情况下,您的问题并未真正显示您正在做的事情。在您的问题中准确无误,为了得到有用的答案。)

答案 1 :(得分:1)

查找:
注4:

  

如果您有源代码分发,请确保构建了JAR文件lib / sphinx4.jar。如果没有,请转到顶级目录并键入:ant。

答案 2 :(得分:0)

您应该使用ant来使用新类构建项目。

您是否按照此处的说明操作:http://cmusphinx.sourceforge.net/sphinx4/#how_build

祝你好运!