我正在使用jmf创建一个应用程序,该应用程序将在用户的计算机上使用java web start和jnlp文件启动。我想创建一个JFrame的jpg图像,然后使用这些图像制作一部快速电影。当我作为一个独立的应用程序运行时,所有这些都可以在用户的计算机上运行。 问题是,当它通过Web启动启动时,我收到一条错误消息,说我没有从applet写入文件的权限。我知道这是使用jmf注册表工具设置的,但我不希望我的用户必须在他们的机器上安装jmf。 我看到java bug网站有一个解决方案。这是补充:
com.sun.media.util.Registry.set("secure.allowSaveFileFromApplets", true)
System.setSecurityManager()
第二行实际上会产生错误,所以我把它拿出来了。当我使用jmf的类的构造函数中的第一行运行代码时没有发生任何事情。 我想知道是否有人有任何解决方案(允许jmf从applet编写文件而不安装jmf的方法)或建议使java bug网站的解决方案实际工作。 谢谢。
编辑 - 小程序和罐子都是签名的
编辑 - 当我说第二行代码出错时,我的意思就是来自eclipse的语法错误,说括号不能为空。我没有想过将代码用于null。我现在已经尝试过了,加上这条线没有什么区别 我并不完全清楚我的程序被认为是applet的原因,但代码抛出的错误具体说:" java.lang.RuntimeException:没有从applet写入文件的权限。"所以我想我也可以把我的程序叫做java调用它。
答案 0 :(得分:3)
我很确定我已经弄清楚如何使这项工作成功。
首先,您需要确保安装jmf的跨平台版本。然后,您需要使用命令行在JMF-2.1.1e \ lib文件夹中使用以下命令运行JMFRegistry。
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文件。
就我个人而言,我刚刚收录了与录制视频有关的所有内容,但您可以随意使用自定义程序来制作适合您的jar。
另外作为一个额外的预防措施,我在我的问题和行中提到的代码中添加了:
JMFSecurityManager.enableSecurityFeatures();
这些被放在调用jmf的类的构造函数中。
希望这可以帮助其他人遇到类似的问题。