1

我一直在到处搜索,但一无所获,所以我想使用 Java 的内置 JavaScript 引擎,但用户无法导入 java 类,如下所示:

importPackage(package.example);

或者

importClass(package.example.MessWithEverythingClass)

或者

new package.example.MessWithEverythingClass(ApplicationIsBroken aib);
4

1 回答 1

0

我有点困惑。根据您的标题,我认为您想阻止用户在 JavaScript 中导入类。在那种情况下,这里已经提出了这个 问题,Java ScriptEngine 的安全问题。建议的一些解决方案是研究 Java SecurityManager,另一位用户说他通过将“importPackage = null”放在所有脚本的顶部来解决这个问题。

相反,根据您脚本的内容,我感觉您在导入 Java 类时遇到了麻烦。如果是这种情况,我在这里回答, 通过 Java ScriptEngine 在 JavaScript 中使用 jar 基本上还有另一种在 JavaScript 中导入的方法,但您没有显示。我这样做,

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

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

    foo.doSomething();

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

    fooSister.doSomthingFromThisClass();

尽管该示例使用来自 jar 文件的包,但它不必来自 jar,并且代码仍然保持不变。

于 2014-07-07T01:17:57.373 回答