2014-10-13 3 views
0

Я создаю программу песочницы с помощью nashorn js-интерпретатора и использую минималистский менеджер безопасности для ограничения того, что он может сделать.
Проблема заключается в том, когда я вызываю engine.eval(reader) Я получаю исключение из null указателя.
Я знаю, что читатель работает, потому что я смог распечатать весь файл по буквам. Я знаю, что это проблема с разрешениями, потому что если я добавлю AllPermissions, тогда все будет работать.
Итак, какие разрешения мне нужны для запуска скрипта в nashorn?Nashorn NullPointerException с SecurityManager

По-видимому, я испортил свои начальные тесты, это не только с файловым считывателем, но также происходит, когда я жестко программирую строку.

ответ

0

Я нашел проблему. Видимо, мне нужно это разрешение запустить Насхорн:

java.io.FilePermission, "/usr/lib/jvm/java-8-openjdk/jre/lib/ext/nashorn.jar", "читать"

0

На самом деле nashorn.jar является расширительной баночкой. С политикой безопасности по умолчанию он получает AllPermission. Если вы замените его своей собственной политикой, я думаю, что вам нужно дать AllPermission - nashorn.jar должен быть в состоянии создать новый загрузчик классов, доступ к ограниченным пакетам и так далее.

+0

Есть определенные вещи, которые я не хочу, чтобы Нашорн имел доступ к таким, как отражение, поэтому AllPermission не вариант. – user2752635

+0

Nashorn требует разрешения на создание ClassLoader. Если код может создавать классы ClassLoader и Load, он эффективно получает AllPermission. Если вы беспокоитесь о том, что скрипты получают их, вам не нужно. Скомпилированные классы скриптов получают только минимальные разрешения для песочницы, если только они не указаны в файле политики (по URL-адресу скрипта). –

+0

http://stackoverflow.com/questions/20793089/secure-nashorn-js-execution Будет иметь отражение, если RuntimePermission ("nashorn. JavaReflection "). У меня работающий nashorn работает с минимальными разрешениями, которые работают. – user2752635

 Смежные вопросы

  • Нет связанных вопросов^_^