JMF - нет разрешения на запись файлов из апплета - PullRequest
2 голосов
/ 18 ноября 2011

Я создаю приложение с использованием jmf, которое будет запущено на компьютере пользователя с java web start и файлом jnlp. Я хотел бы создать изображение JFrame в формате jpg, а затем использовать эти изображения для создания быстрого фильма. Все это работает, когда я работаю как отдельное приложение на компьютере пользователя. Проблема в том, что когда он запускается через веб-запуск, я получаю сообщение о том, что у меня нет прав на запись файлов из апплетов. Я понимаю, что это то, что устанавливается с помощью инструмента реестра jmf, но я не хочу, чтобы мои пользователи устанавливали jmf на свои машины. Я видел, что было одно решение с сайта ошибок Java. Это было добавить:

com.sun.media.util.Registry.set("secure.allowSaveFileFromApplets", true)<p> System.setSecurityManager()

Вторая строка на самом деле создает ошибку, поэтому я ее убрал. Ничего не произошло, когда я запустил код с первой строкой в ​​конструкторе класса, который использует jmf. Мне было интересно, есть ли у кого-нибудь какие-либо решения для этого (способы, позволяющие jmf записывать файлы из апплета без установки jmf) или предложения, чтобы решение с сайта с ошибками java действительно работало. Благодарю.

Редактировать - апплет и банки все подписаны

Edit - Когда я сказал, что во второй строке кода произошла ошибка, я имел в виду что-то вроде синтаксической ошибки от eclipse, говорящей о том, что скобка не может быть пустой. Я не думал использовать код с нуля. Хотя я попробовал это сейчас, и добавление строки не имеет значения.
Я не совсем понимаю, почему моя программа считается апплетом, но ошибка, которую выдает код, специально говорит: «java.lang.RuntimeException: нет прав на запись файлов из апплетов». Поэтому я полагаю, что я могу также назвать свою программу так, как ее называют в java.

1 Ответ

3 голосов
/ 21 ноября 2011

Я почти уверен, что понял, как заставить это работать.

Сначала вам нужно убедиться, что вы устанавливаете кроссплатформенную версию jmf.Затем вам нужно будет использовать командную строку для запуска JMFRegistry с помощью следующей команды в папке JMF-2.1.1e \ lib.

java -cp jmf.jar;mediaplayer.jar;multiplayer.jar JMFRegistry

Теперь вам нужно установить флажки, чтобы разрешить запись и захват.Теперь вам нужно открыть JMFCustomizer, чтобы создать свой собственный jar.Вы запустите следующую команду в той же папке, что и в прошлый раз.

java -cp customizer.jar; jmf.jar;mediaplayer.jar;multiplayer.jar JMFCustomizer

Затем вам нужно будет выполнить шаги для создания пользовательского файла JAR, обязательно используя файл jmf.jar, который поставляется с этой установкой.

Лично я просто включил все, что было связано с записью видео, но вы можете возиться с настройщиком столько, сколько вам нужно, чтобы сделать банку, которая подойдет вам.

Также в качестве дополнительной меры предосторожности я добавил код, упомянутый в моем вопросе, а также строку:

JMFSecurityManager.enableSecurityFeatures();

Они были помещены в конструктор класса, вызывающего jmf.

Надеюсь, это поможет кому-то, у кого возникла подобная проблема.

...