Java脚本引擎-禁用导入
我一直在到处搜索,但什么也没找到,所以我想使用Java的内置JavaScript引擎,但用户无法导入Java类,如以下任何一种:Java脚本引擎-禁用导入,java,javascript,import,eval,scriptengine,Java,Javascript,Import,Eval,Scriptengine,我一直在到处搜索,但什么也没找到,所以我想使用Java的内置JavaScript引擎,但用户无法导入Java类,如以下任何一种: importPackage(package.example); 或 或 我有点困惑。根据你的标题,我认为你想阻止用户在JavaScript中导入类。在这种情况下,这里已经提出了这个问题, . 一些解决方案建议对Java SecurityManager进行研究,另一位用户说,他通过在所有脚本的顶部添加“importPackage=null”来解决这个问题 相反,根据脚
importPackage(package.example);
或
或
我有点困惑。根据你的标题,我认为你想阻止用户在JavaScript中导入类。在这种情况下,这里已经提出了这个问题, . 一些解决方案建议对Java SecurityManager进行研究,另一位用户说,他通过在所有脚本的顶部添加“importPackage=null”来解决这个问题 相反,根据脚本的内容,我感觉您在导入Java类时遇到了麻烦。如果是这样的话我在这里回答, 基本上,还有另一种导入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,代码仍然保持不变。我不知道java有内置的js引擎。它是如何调用的?this.ScriptEngine=new-ScriptEngineManager();this.Script=this.ScriptEngine.getEngineByName(“JavaScript”);然后,通过对象:this.Script.put(“Sys”,Sys);this.Script.put(“Sys.out”,Sys.out);this.Script.put(“Sys.err”,Sys.err);我指的是它的名字,对不起:)它会是犀牛吗?是的,就是它。只需在google中搜索:javax.script.ScriptEngine,就可以找到jython、jruby等插件@perencia有几个名字可以用。首先,它们让您可以选择使用大写(在某些地方)或全部小写,例如,在getEngineByName中插入JavaScript或JavaScript都可以,您也可以说ECMAScript,我认为甚至是JS或JS。所有这些名称都适用于JavaScript。
new package.example.MessWithEverythingClass(ApplicationIsBroken aib);
pack = Packages.abc.foo.pack.name;
var foo = new pack.ClassFromTheJarFile("arg1","arg2");
foo.doSomething();
var fooSister = new pack.AnotherCLassFromTheJarFile("arg1");
fooSister.doSomthingFromThisClass();