我一直在到处搜索,但一无所获,所以我想使用 Java 的内置 JavaScript 引擎,但用户无法导入 java 类,如下所示:
importPackage(package.example);
或者
importClass(package.example.MessWithEverythingClass)
或者
new package.example.MessWithEverythingClass(ApplicationIsBroken aib);
我一直在到处搜索,但一无所获,所以我想使用 Java 的内置 JavaScript 引擎,但用户无法导入 java 类,如下所示:
importPackage(package.example);
或者
importClass(package.example.MessWithEverythingClass)
或者
new package.example.MessWithEverythingClass(ApplicationIsBroken aib);
我有点困惑。根据您的标题,我认为您想阻止用户在 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,并且代码仍然保持不变。