【问题标题】:How to access external JAR files from JavaScript using Rhino and Eclipse?如何使用 Rhino 和 Eclipse 从 JavaScript 访问外部 JAR 文件?
【发布时间】:2010-01-15 23:37:48
【问题描述】:

我正在使用 Mozilla Rhino 编写一个 JavaScript 服务器应用程序。我想在我的项目中包含 HttpClient 类以轻松访问网络,但我不知道如何配置我的 Eclipse 项目以让 Rhino 加载 HttpClient JAR 文件。

我已将 js.jar(来自 Rhino)和 httpclient-4.0.1.jar 添加到我在 Eclipse 中的项目构建路径中,并且在我的运行配置中,我从 Rhino 的 js.jar(它找到)中指定了 Main 类,并在我的JavaScript 文件我基本上是这样做的:

importPackage(org.apache.http.client.methods);
var get = new HttpGet("<some url returning json data>");
get.execute();
print(get.getResponseBodyAsString());

这样说失败了:

Exception in thread "Thread-0" org.mozilla.javascript.EcmaError: ReferenceError: "HttpGet" is not defined.

怎么会这么难?我一定是做错了什么。

【问题讨论】:

    标签: java javascript eclipse classpath rhino


    【解决方案1】:

    如果您的类路径设置正确,我不明白为什么您的代码不应该工作。我建议尝试显式加载该类以查看它是否真的可用,否则您的类路径中似乎没有它:

    println( java.lang.Class.forName( 'org.apache.http.client.methods.HTTPGet' ) );
    

    Rhino 应该能够从外部 jar 文件加载到类,而不会出现问题或额外的工作。

    【讨论】:

      【解决方案2】:

      好的,问题似乎是我在类路径和项目的构建路径中都有多个 httpclient-4.0.1.jar 文件的引用。除此之外,我似乎遗漏了httpclient-4.0.1.jar 所依赖的几个依赖项。在清理了我的类路径并将所有必要的 jar 添加到我的项目之后,它现在似乎可以按预期找到所有内容。

      感谢你们的帮助!

      【讨论】:

        【解决方案3】:

        您在运行程序时是否确定httpclient-4.0.1.jar 在类路径中?

        【讨论】:

        • 那么构建路径和类路径有什么区别?我假设构建路径是在编译时(或什么),而类路径是在运行时?我已将 httpclient-4.0.1.jar 添加到类路径文件夹中,如果我编写纯 Java(而不是 JavaScript 并通过 Rhino 运行它),它会完美地找到 HttpClient 库。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-30
        • 1970-01-01
        • 2018-03-19
        • 2013-09-28
        • 2011-02-25
        相关资源
        最近更新 更多