我还是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。可能导致这种情况发生的原因是什么?
感谢您的时间!
答案 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?
祝你好运!