我正在使用 nashorn js 解释器创建一个沙盒程序,并使用一个极简的安全管理器来限制它可以做什么。
问题是当我打电话时engine.eval(reader)
我得到一个空指针异常。
我知道阅读器可以工作,因为我能够逐字打印整个文件。我知道这是一个权限问题,因为如果我添加 AllPermissions 那么一切正常。
那么我需要什么权限才能在 nashorn 中运行脚本?
显然我搞砸了我的初始测试,不仅仅是文件阅读器,当我对字符串进行硬编码时也会发生这种情况。
我正在使用 nashorn js 解释器创建一个沙盒程序,并使用一个极简的安全管理器来限制它可以做什么。
问题是当我打电话时engine.eval(reader)
我得到一个空指针异常。
我知道阅读器可以工作,因为我能够逐字打印整个文件。我知道这是一个权限问题,因为如果我添加 AllPermissions 那么一切正常。
那么我需要什么权限才能在 nashorn 中运行脚本?
显然我搞砸了我的初始测试,不仅仅是文件阅读器,当我对字符串进行硬编码时也会发生这种情况。
实际上 nashorn.jar 是一个扩展 jar。使用默认的安全策略,它会获得 AllPermission。如果您用自己的策略替换它,我认为您需要提供 AllPermission - nashorn.jar 需要能够创建新的类加载器、访问受限包等。
我发现了问题。显然我需要这个权限来运行 nashorn:
java.io.FilePermission,“/usr/lib/jvm/java-8-openjdk/jre/lib/ext/nashorn.jar”,“读取”