【问题标题】:Can JavaScript use classes from a jar file (Non Internet Use)JavaScript 可以使用 jar 文件中的类吗(非 Internet 使用)
【发布时间】:2014-07-04 19:06:59
【问题描述】:

我在 jar 文件中有一个 API,但是如何在 JavaScript 中使用 jar 中的类?当我尝试导入它们时,

    conf = Packages.abcapi.Config;
    var cfg = new conf.Config();

它不起作用。这不会在浏览器或互联网上使用。

更新:

我正在使用 Java ScriptEngine 将我们的 API 扩展到所有 JSR-223 脚本语言。在 Java 应用程序中,我读取了一个 JavaScript 文件,然后使用 ScriptEngine 执行该文件。我需要 JavaScript 文件使用来自 jar 文件的 API 中的类。我尝试在运行 ScriptEngine 时在类路径中设置 jar,但它仍然找不到使用上述代码的类。不过,这在 Jython 中运行良好,因为在 Jython 中,在类路径中设置 jar 后,使用 jar 文件中的类没有问题。

【问题讨论】:

  • 定义import关于你尝试的内容并定义doesn't work
  • 那么你到底在哪里运行 javascript?节点.js?通过犀牛?你需要具体。
  • @Gimby 尽管问题正在得到解答,但请查看上面的更新。

标签: javascript jar scriptengine


【解决方案1】:

我正在读取 JavaScript 文件,然后使用 Java ScriptEngine 执行它们。当您运行将像这样执行 JavaScript 的 Java 代码时,将 jar 添加到您的类路径中,

    java -cp ./;C:\Location\Of\The\Jar\File\abc.jar MainClass

然后在 JavaScript 中,您可以从该 jar 中获取包并将包设置为变量。然后,当您想使用该包中的 Class 时,只需在类名前面加上变量,然后加上 .像这样,

    myvariable = Packages.abc.foo.pack.name;

    var foo = new myvariable.ClassFromTheJarFile("arg1","arg2");

    foo.doSomething();

    var fooSister = new myvariable.AnotherCLassFromTheJarFile("arg1");

    fooSister.doSomthingFromThisClass();

我做错的是尝试像这样直接从包中导入类,

    myvariable = Packages.abc.foo.pack.name.ClassFromTheJarFile;

所以只导入包而不是类。为了澄清您不需要使用 Java *

这不是在浏览器或互联网上使用的。这是另一个使用来自 URL 位置的 jar 的链接,它可能对某人有帮助 http://mozilla-firefox-extension-dev.blogspot.com/2004/11/calling-java-code-in-custom-jars-from.html

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-13
  • 2014-10-02
  • 1970-01-01
  • 2010-11-18
  • 2014-08-09
  • 1970-01-01
相关资源
最近更新 更多