5

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."

再び verbose を使用すると、期待どおりの動作が得られます。

概要:

  1. javaws/usr/lib/jvm/jre-1.7.0.51-linux/bin/javawsの動作は異なりますが、javaws は /usr/lib/jvm/jre-1.7.0.51-linux/bin/javaws へのシンボリック リンクです。

  2. -verboseオプションを使用すると、異なる (予想される) 動作が得られます。

verbose の動作が異なる理由を知っている人はいますか?また、その動作をデフォルトにする方法はありますか?

皆さんに感謝し、長い投稿で申し訳ありません。私は十分に具体的になりたかっただけです。:)

敬具、テオドール

4

0 に答える 0