如何以这样的方式配置the icedtea-plugin package for ubuntu precise,默认情况下它会执行具有特定内存限制的所有applet?最好使用命令行工具而不使用图形用户界面。
我正在使用java applet构建一个kiosk设置,并希望增加所有这些applet的默认内存限制。自助服务终端基于ubuntu linux,使用the icedtea-plugin package作为浏览器插件。由于构建自助服务终端是自动化和无头的,我宁愿从命令行配置它,如果可能的话。
这是我到目前为止所发现的:
-Xmx…
命令行参数,该参数将在启动插件的java虚拟机时使用。<param name="java_arguments" value="-Xmx…">
。
但这意味着修改我的所有HTML文件,我宁愿避免。而且我很有可能必须签署我的代码来完成这项工作,这在我的项目的其他地方增加了很多问题。ControlPanel
来设置这些命令行开关。似乎配置被写入文件~/.java/deployment/deployment.properties
,并与密钥deployment.javaws.jre.0.args
关联。0
似乎是指一个特定的JVM,如控制面板中表格的一行所示。对于每个JVM,除了args
值之外,还有几个值,它们共享一个公共索引号。~/.icedtea/
的类似文件。不确定这是表示~/.icedtea/deployment.properties
还是~/.icedtea/deployment/deployment.properties
。 IcedTea似乎没有带ControlPanel
。正如你所看到的,关于这个可能如何工作有很多提示,但到目前为止,我还没有看到关于将工作的确切答案。还有许多悬而未决的问题:
deployment
的目录?args
值,即使相应的规范中没有描述它?我想我可以尝试所有可能的组合,看看其中一个是否有效,但这样做需要相当长的时间。所以我在这里问,看看是否有人有这方面的经验,并且可以提供一个安静的答案。如果没有,我想我最终会回答自己的问题,一旦我努力尝试了事情。
答案 0 :(得分:0)
正如oracle所说:http://docs.oracle.com/javase/7/docs/webnotes/tsg/TSG-Desktop/html/plugin.html。
应设置以下环境变量以向applet添加其他参数:
_JPI_VM_OPTIONS=-Xmx…
此外,正如所提到的网站所说:
请注意,设置环境变量后需要重新启动浏览器。如果要在命令shell中设置此环境变量,则必须使用相同的命令shell启动浏览器,以便浏览器继承环境变量的值。
但是,如果您怀疑如何在ubuntu中设置环境变量,以下帖子可能会有所帮助:Make $JAVA_HOME easily changable in Ubuntu
答案 1 :(得分:0)
我刚看了一下icedtea-web插件的源代码。 The part of the code which builds the command line似乎没有任何条款可以包括自定义论证,无论其来源如何。所以我编辑哪个配置文件,HTML文件或环境变量并不重要,那里的代码将构建相同的命令行来调用java,无视我的所有细节。
因此,如果所有配置都失败了,剩下的就是hackery。一种方法是修补插件的源代码,并使其在命令行中包含其他单词。对于静态添加,即单个尺寸改变,这将是相当容易的。更一般的修复将包括某些环境变量的内容,Peter's answer建议的方式。这意味着对有问题的环境变量进行分词,并动态地为单词数组分配空间。在C级别做了相当多的工作。
作为替代方案,可以在执行的二进制级别处理此问题。该插件显然具有硬编码到其中的可执行文件的路径。就我而言,此路径为/usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java
。可以将该二进制文件重命名为java.orig
,并将shell脚本放在其位置,其中包含以下内容:
#!/bin/bash
for i in "$@"; do
if [[ "${i}" == sun.applet.PluginMain ]]; then
exec "$0.orig" -Xmx512m "$@"
fi
done
exec "$0.orig" "$@"
这种方法的一个结果是,ps
将不再将这些小程序打印为java
,而是打印为java.orig
。在大多数情况下不应该是一个问题。