Различное поведение челюстей с и без подробного варианта
У меня довольно загадочная проблема с утилитой javaws, и я не знаю, как мне начать расследование первопричины.
Вот информация, которую мне удалось собрать:
$ cat /etc/os-release
ID=wrlinux
NAME=Wind River Linux
VERSION=6.0.0.17
VERSION_ID=6.0.0.17
PRETTY_NAME=Wind River Linux 6.0.0.17
$ rpm -qa | grep jdk
jdk-fonts-1.5.0-u19r0.0.lib32_x86
jdk-plugin-1.5.0-u19r0.0.lib32_x86
jdk-1.5.0-u19r0.0.lib32_x86
jdk-dev-1.5.0-u19r0.0.lib32_x86
jdk7-1.7.0-u51r2.0.lib32_x86
jdk7-plugin-1.7.0-u51r2.0.lib32_x86
jdk7-fonts-1.7.0-u51r2.0.lib32_x86
jdk7-dev-1.7.0-u51r2.0.lib32_x86
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:$HOME:/usr/lib/jvm/java-1.7.0-linux-1.7.0.51/jre/bin
(Я лишил часть путей здесь, по конфиденциальным причинам)
В настоящее время у меня есть 2 версии, но должна быть активна только 1.7. Я должен сделать обновление версий Java, но почти в конце эта ошибка появляется.
Прежде всего, команда, которая должна работать должным образом, является следующей:
$ javaws http://link_to_file.jnlp
Вот команды, которые я выполнил с некоторыми дополнительными пояснениями ниже:
$ javaws http://link_to_file.jnlp
Disabling Java as it is too old and likely to be out of date. To reenable use jcontrol utility
Это фактически не отключает Java, и многократное выполнение команды дает один и тот же результат.
$ javaws -verbose http://link_to_file.jnlp
Java(TM) Web Start 10.51.2.13-fcs Launching: /usr/lib/jvm/java-1.7.0-linux-1.7.0.51/jre/bin/java
/usr/lib/jvm/java-1.7.0-linux-1.7.0.51/jre/bin/java
-classpath
/usr/lib/jvm/java-1.7.0-linux-1.7.0.51/jre/lib/deploy.jar
-Djava.security.policy=file:/usr/lib/jvm/java-1.7.0-linux-1.7.0.51/jre/lib/security/javaws.policy
-DtrustProxy=true
-Xverify:remote
-Djnlpx.home=/usr/lib/jvm/java-1.7.0-linux-1.7.0.51/jre/bin
-Djnlpx.origFilenameArg=http://link_to_file.jnlp
-Djnlpx.remove=false
-Dsun.awt.warmup=true
-Xbootclasspath/a:/usr/lib/jvm/java-1.7.0-linux-1.7.0.51/jre/lib/javaws.jar:/usr/lib/jvm/java-1.7.0-linux-1.7.0.51/jre/lib/deploy.jar:/usr/lib/jvm/java-1.7.0-linux-1.7.0.51/jre/lib/plugin.jar
-Djnlpx.splashport=40783
-Djnlpx.jvm=/usr/lib/jvm/java-1.7.0-linux-1.7.0.51/jre/bin/java
com.sun.javaws.Main
-verbose
-notWebJava
http://link_to_file.jnlp
Picked up JAVA_TOOL_OPTIONS: -Djava.vendor="Sun Microsystems Inc."
Использование многословия дает мне ожидаемое поведение. Как странно это?!
... становится еще интереснее...
$ which javaws
/usr/bin/javaws
$ file /usr/bin/javaws
/usr/bin/javaws: symbolic link to `/usr/lib/jvm/jre-1.7.0.51-linux/bin/javaws'
$ /usr/lib/jvm/jre-1.7.0.51-linux/bin/javaws http://link_to_file.jnlp
Disabling Java as it is too old and likely to be out of date. To reenable use jcontrol utility
Picked up JAVA_TOOL_OPTIONS: -Djava.vendor="Sun Microsystems Inc."
Picked up JAVA_TOOL_OPTIONS: -Djava.vendor="Sun Microsystems Inc."
Picked up JAVA_TOOL_OPTIONS: -Djava.vendor="Sun Microsystems Inc."
$ /usr/lib/jvm/jre-1.7.0.51-linux/bin/javaws http://link_to_file.jnlp
This application cannot be downloaded because Java has been disabled through the web. You can enable Java on this system using the Java Control Panel.
Эта команда успешно отключила Java, и я должен вручную включить ее с помощью jcontrol (Панель управления)
$ /usr/lib/jvm/jre-1.7.0.51-linux/bin/javaws -verbose http://link_to_file.jnlp
Java(TM) Web Start 10.51.2.13-fcs Launching: /usr/lib/jvm/java-1.7.0-linux-1.7.0.51/jre/bin/java
/usr/lib/jvm/java-1.7.0-linux-1.7.0.51/jre/bin/java
-classpath
/usr/lib/jvm/java-1.7.0-linux-1.7.0.51/jre/lib/deploy.jar
-Djava.security.policy=file:/usr/lib/jvm/java-1.7.0-linux-1.7.0.51/jre/lib/security/javaws.policy
-DtrustProxy=true
-Xverify:remote
-Djnlpx.home=/usr/lib/jvm/java-1.7.0-linux-1.7.0.51/jre/bin
-Djnlpx.origFilenameArg=http://link_to_file.jnlp
-Djnlpx.remove=false
-Dsun.awt.warmup=true
-Xbootclasspath/a:/usr/lib/jvm/java-1.7.0-linux-1.7.0.51/jre/lib/javaws.jar:/usr/lib/jvm/java-1.7.0-linux-1.7.0.51/jre/lib/deploy.jar:/usr/lib/jvm/java-1.7.0-linux-1.7.0.51/jre/lib/plugin.jar
-Djnlpx.splashport=43537
-Djnlpx.jvm=/usr/lib/jvm/java-1.7.0-linux-1.7.0.51/jre/bin/java
com.sun.javaws.Main
-verbose
-notWebJava
http://link_to_file.jnlp
Picked up JAVA_TOOL_OPTIONS: -Djava.vendor="Sun Microsystems Inc."
Повторное использование многословия дает мне ожидаемое поведение.
Резюме:
javaws и /usr/lib/jvm/jre-1.7.0.51-linux/bin/javaws ведут себя по-разному, хотя javaws является символической ссылкой на /usr/lib/jvm/jre-1.7.0.51-linux/bin/javaws .
Использование опции -verbose дает нам другое (ожидаемое) поведение.
У кого-нибудь есть идея, почему verbose ведет себя по-разному, и есть ли способ сделать его поведение стандартным?
Большое спасибо всем и извините за длинный пост. Я просто хотел быть достаточно конкретным.:)
С наилучшими пожеланиями, Теодор