Javaws启动错误的JVM

时间:2017-12-14 13:34:30

标签: java java-ee java-web-start

我使用Debian。我使用http://ppa.launchpad.net/webupd8team/java/ubuntu上提供的脚本安装了Java 8及更高版本的Java 6。

我运行了一个使用Java 6的应用程序.file.pl包含这样一个部分:

<resources>
<j2se version="1.6.0+" href="http://java.sun.com/products/autodl/j2se" 
initial-heap-size="128M" max-heap-size="400M"/>

我从Java 6文件夹中调用javaws。我看到飞溅了一会儿然后停下来(我在控制台得到提示,没有其他事情发生)。我调整了我的env变量以确保问题不存在。一些细节:

➜  java-6-oracle set | grep jvm
DERBY_HOME=/usr/lib/jvm/java-6-oracle/db
J2REDIR=/usr/lib/jvm/java-6-oracle/jre
J2SDKDIR=/usr/lib/jvm/java-6-oracle
JAVA_HOME=/usr/lib/jvm/java-6-oracle
OLDPWD=/usr/lib/jvm/java-6-oracle/jre
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/usr/lib/jvm/java-6-oracle/bin:/usr/lib/jvm/java-6-oracle/db/bin:/usr/lib/jvm/java-6-oracle/jre/bin
PWD=/usr/lib/jvm/java-6-oracle
path=( /usr/local/bin /usr/bin /bin /usr/local/games /usr/games /usr/lib/jvm/java-6-oracle/bin /usr/lib/jvm/java-6-oracle/db/bin /usr/lib/jvm/java-6-oracle/jre/bin )

➜  java-6-oracle ./jre/javaws/javaws -verbose ~/file.pl
Java(TM) Web Start 1.6.0_45 Launching: /usr/lib/jvm/java-8-oracle/jre/bin/java
/usr/lib/jvm/java-8-oracle/jre/bin/java
 -Xbootclasspath/a:/usr/lib/jvm/java-6-oracle/jre/lib/javaws.jar:/usr/lib/jvm/java-6-oracle/jre/lib/deploy.jar:/usr/lib/jvm/java-6-oracle/jre/lib/plugin.jar
 -classpath
 /usr/lib/jvm/java-6-oracle/jre/lib/deploy.jar
 -Djava.security.policy=file:/usr/lib/jvm/java-6-oracle/jre/lib/security/javaws.policy
 -DtrustProxy=true
 -Xverify:remote
 -Djnlpx.home=/usr/lib/jvm/java-6-oracle/jre/bin
 -Dsun.awt.warmup=true
 -Djnlpx.origFilenameArg=/home/me/file.pl
 -Djnlpx.remove=true
 -Djnlpx.splashport=38511
 -Djnlpx.jvm=/usr/lib/jvm/java-8-oracle/jre/bin/java
 com.sun.javaws.Main
 /tmp/javawMxZTga

我看到调用了incorect jvm版本。为什么会这样?

编辑: 它不是Webstart runs with wrong version of JRE的副本我没有使用浏览器运行程序。我的Javas都是64位。

1 个答案:

答案 0 :(得分:1)

问题是这个丑陋的j2se版本标签。它定义了参数用于某个JVM版本,但也允许使用哪些版本。您定义了1.6.0+,允许在java 6之后的任何内容。如果您想将其限制为1.6,则可以使用“1.6 *”。

另见How to specify a JRE range in jnlp file?