Я создал java-игру, которая сохраняет рекорд в файле, но у меня возникают проблемы с предоставлением программе достаточных разрешений для работы под appletviewer.
Похоже, appletviewer игнорирует мой файл политики.
У меня Game.java
скомпилировано в Game.class
, а Game.html
загружает и запускает апплет.В той же директории, что и эти, у меня есть файл политики с именем policy
со следующим содержимым (сделанным с policytool
).
grant codeBase "file:///mypath/Game.html" {
permission java.security.AllPermission;
};
Тогда appletviewer
предположительно позволяет вам указать файл политики, подобный этому:
appletviewer -J-Djava.security.policy=policy /mypath/Game.html
Но когда я запускаю игру таким образом, она может только читать файл рекордов, но не записывать в него:
Exception in thread "Thread-5" java.security.AccessControlException:
access denied (java.io.FilePermission highscore write)
Кроме того, если я дважды щелкну вПоиск сценария оболочки, содержащего только одну команду appletviewer, описанную выше, затем он даже не имеет разрешения на чтение:
Exception in thread "Thread-5" java.security.AccessControlException:
access denied (java.io.FilePermission highscore read)
Один тревожный признак состоит в том, что если я дам имя несуществующему файлувместо моего файла политики, я получаю то же поведение без дополнительных предупреждений или ошибок:
appletviewer -J-Djava.security.policy=notafile /mypath/Game.html
Сама игра (за исключением кода с высокими показателями) отлично работает в каждом случае, и высокая-score код также работает нормально, если я запускаю все это под Eclipse, хотя Eclipse также запускает его с помощью appletviewer.Eclipse также создает файл политики, очень похожий на приведенный выше, который я также пробовал из командной строки, но он все равно не работал из командной строки.
Кажется, что appletviewer
не смотрит нафайл политики, хотя я использую команду именно так, как показано в различных руководствах, таких как http://docs.oracle.com/javase/tutorial/security/tour1/step3.html.
Почему appletviewer игнорирует мой файл политики?