【问题标题】:including jar files to a classpath将 jar 文件包含到类路径中
【发布时间】:2023-03-11 02:35:01
【问题描述】:

我正在尝试运行 Sphinx 的 HelloWOrd 程序,它需要一个 .jar 文件才能工作。

我试图在类路径中添加一个 jar 文件,但我遇到了一些错误

contend.util 不存在 导入 edu.cmu.sphinx.frontend.util.Microphone; ^ home/karen/workspace/hola/src/hola/HelloWorld.java:4: 包 edu.cmu.sphinx.recognizer 不存在 导入edu.cmu.sphinx.recognizer.Recognizer; ^ home/karen/workspace/hola/src/hola/HelloWorld.java:5: 包 edu.cmu.sphinx.result 不存在 导入edu.cmu.sphinx.result.Result; ^ home/karen/workspace/hola/src/hola/HelloWorld.java:6: 包 edu.cmu.sphinx.util.props 不存在 导入edu.cmu.sphinx.util.props.ConfigurationManager; ^ home/karen/workspace/hola/src/hola/HelloWorld.java:11:找不到符号 符号:类 ConfigurationManager 位置:类hola.HelloWorld 配置管理器厘米; ^ home/karen/workspace/hola/src/hola/HelloWorld.java:14:找不到符号 符号:类 ConfigurationManager 位置:类hola.HelloWorld cm = new ConfigurationManager(args[0]); ^ home/karen/workspace/hola/src/hola/HelloWorld.java:16:找不到符号 符号:类 ConfigurationManager 位置:类hola.HelloWorld cm = new ConfigurationManager(HelloWorld.class.getResource("helloworld.config.xml")); ^ home/karen/workspace/hola/src/hola/HelloWorld.java:19:找不到符号 符号:类识别器 位置:类hola.HelloWorld 识别器recognizer = (Recognizer) cm.lookup("recognizer"); ^ home/karen/workspace/hola/src/hola/HelloWorld.java:19:找不到符号 符号:类识别器 位置:类hola.HelloWorld 识别器recognizer = (Recognizer) cm.lookup("recognizer"); ^ home/karen/workspace/hola/src/hola/HelloWorld.java:23:找不到符号 符号:麦克风类 位置:类hola.HelloWorld 麦克风麦克风 = (麦克风) cm.lookup("麦克风"); ^ home/karen/workspace/hola/src/hola/HelloWorld.java:23:找不到符号 符号:麦克风类 位置:类hola.HelloWorld 麦克风麦克风 = (麦克风) cm.lookup("麦克风"); ^ home/karen/workspace/hola/src/hola/HelloWorld.java:36:找不到符号 符号:类结果 位置:类hola.HelloWorld 结果result=recognizer.recognize(); ^ 12个错误

我的问题是: 我必须添加所有需要我的项目的包还是只添加 jar 文件和主类?

请推荐!

这是 HelloWord 程序:

打包好;

import edu.cmu.sphinx.frontend.util.Microphone;
import edu.cmu.sphinx.recognizer.Recognizer;
import edu.cmu.sphinx.result.Result;
import edu.cmu.sphinx.util.props.ConfigurationManager;

public class HelloWorld {
    public static void main(String [] args){
        System.out.println("VIcente y karen");
        ConfigurationManager cm;
        System.out.println("Karen entiende esto");
                if (args.length > 0) {
                    cm = new ConfigurationManager(args[0]);
                } else {
                    cm = new ConfigurationManager(HelloWorld.class.getResource("helloworld.config.xml"));
                }

                Recognizer recognizer = (Recognizer) cm.lookup("recognizer");
                recognizer.allocate();

                // start the microphone or exit if the programm if this is not possible
                Microphone microphone = (Microphone) cm.lookup("microphone");
                if (!microphone.startRecording()) {
                    System.out.println("Cannot start microphone.");
                    recognizer.deallocate();
                    System.exit(1);
                }

                System.out.println("Say: (Good morning | Hello) ( Bhiksha | Evandro | Paul | Philip | Rita | Will )");

                // loop the recognition until the programm exits.
                while (true) {
                    System.out.println("Start speaking. Press Ctrl-C to quit.\n");

                    Result result = recognizer.recognize();

                    if (result != null) {
                        String resultText = result.getBestFinalResultNoFiller();
                        System.out.println("You said: " + resultText + '\n');
                    } else {
                        System.out.println("I can't hear what you said.\n");
                    }
                }
    }

}

【问题讨论】:

  • 您的程序需要的所有 jars 都必须添加到类路径中。
  • 我只有 1 个 jar 文件,但我的项目依赖于一些包。我必须添加这些包?
  • 最好把Hello World程序贴出来让我们了解你的编码是否正确。
  • 您使用的是 IDE 吗?如果是,是哪一个,你是如何将你的 jar 文件“添加”到类路径的?
  • 是的,我正在使用 Eclipse IDE 并正在添加以下命令:

标签: java classpath voice-recognition cmusphinx


【解决方案1】:

很可能您没有在程序中导入正确的类或包(包名称是否正确?似乎编译器无法从前几行错误中识别它们)。

即使您的类路径中有包含类的 JAR 文件,您仍然必须将它们导入您的特定类中,以便编译器知道您需要哪些外部类。

您还必须为内置的 Java 类(例如java.util.ArrayList)执行此操作。 如果您提供您的计划,我们将能够为您提供更好的帮助。

如果您拥有的 Jar 文件还依赖于其他库,那么它们也必须提供。

使用 zip 程序(例如 winrar)打开您的 JAR 文件并检查您要导入的包是否存在。您应该会看到一个名为 edu 的文件夹,其中包含更多文件夹 cmu/sphinx/frontend/util,然后是 Microphone.class。对于带有文件 Recognizer.class 的 edu.cmu.sphinx.recognizer 也是如此。

如果您使用的是 IDE(例如 Eclipse、Netbeans 或 IntelliJ IDEA),请确保将 jar 文件添加到项目库列表中。

对于 Eclipse,您必须遵循程序here

【讨论】:

  • 但是 Helloworld.jar 里面真的有这些类吗?所以如果你用winrar或类似的打开它,你会找到edu/cmu/sphinx等文件夹吗?
  • 所以您确定您已将 Helloworld.jar 添加到构建路径中,并且 Eclipse 是否在抱怨这些包不存在? IE。它是否在这些导入线下方显示一条红线?如果是,当您按下“播放”按钮并从 Eclipse 运行程序时会发生什么?
  • 这是我的输出:edu.cmu 的 edu.cmu.sphinx.util.props.SaxLoader.load(SaxLoader.java:74) 的线程“main”java.lang.NullPointerException 中的异常。 sphinx.util.props.ConfigurationManager.(ConfigurationManager.java:58) 在 hola.HelloWorld.main(HelloWorld.java:16)
  • 现在这是一个完全不同的错误。我不知道您在 HelloWorld.java 的第 16 行有什么,但很可能它与您传递给 ConfigurationManager 的构造函数的参数有关。所以很可能“helloworld.config.xml”并不存在?
  • 所以路径很可能不正确。如果它位于 jar 文件的根目录,我认为它需要是:“/helloworld.config.xml”
猜你喜欢
  • 2012-02-15
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多