有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

javascript如何从脚本访问Java类?

我有一个Java类,比如说MWE

package myjava;

public class Foo {
   public Foo() {}
   public int bar() {
      return 1;
   }
   public static void main(String[] args) {
      System.out.println(new Foo().bar());
   }
}

它的位置被添加到CLASSPATH变量中,例如

java myjava.Foo

在Windows命令行中

现在我想从Google Chrome中的Tampermonkey脚本调用这个方法。我在不同地方看到的例子似乎不起作用:

var Foo = Java.type("myjava.Foo");
var foo = new Foo();
var bar = foo.bar();

(如documentation at Oracle建议)和

var foo = new Packages.myjava.Foo();
var bar = foo.bar();

(以及其他一些变体)都会在第一行抛出一个错误,不是因为特定的类未知,而是因为第一个标识符(JavaPackages,我甚至尝试简单地使用new myjava.Foo()

显然,我似乎不知道如何从脚本中引用Java类,但我也找不到一个有效的示例。正确的方法是什么

编辑:正如我所注意到的,我链接到的网站提供的代码甚至不应该对web浏览器的JavaScript引擎有效


共 (1) 个答案

  1. # 1 楼答案

    最后,我设法找到了一个解决办法,尽管这有点麻烦:

    可以使用GM_xmlhttpRequestPOST请求中的参数发送到本地主机上的PHP文件,本地web服务器将其作为命令行参数传递给相关Java类。然后通过echo返回结果,可以从responseText字段读取结果字符串,并在浏览器脚本中进行解释