私はUbuntuにいますMATE= 18.04。私が試したすべてのjnlpアプリケーションは実行エラーを与えます。検査後、Javaで一部のライブラリーが欠落しているようです。
だから私はすべてを削除し、インストールを再開しました、そしてapt-get install icedtea-8-pluginは次のものに依存していることがわかりました:
ca-certificates-Java default-jre default-jre-headless icedtea-8-plugin
icedtea-netx librhino-Java libtagsoup-Java openjdk-11-jre
openjdk-11-jre-headless
11ではなくopenjdk-8に依存することが予想されます(ubuntuパッケージのWebサイトによると)。 jdk-11にはこれに必要ないくつかのライブラリが含まれていないと思います。
私の推測では、jdk-11がどのjdk-8パッケージよりも最新の選択であるこの状況を生成するPPAをインストールしたと思います。では、icedtea-8が11ではなくopenjdk-8と共にインストールされるようにするにはどうすればよいですか?
編集:これは、Firefoxからjnlpアプリケーションを起動しようとしたときの出力です。
Denying permission: ("Java.lang.RuntimePermission" "accessClassInPackage.Sun.util.resources")
net.sourceforge.jnlp.LaunchException: Fatal: Launch Error: Could not launch JNLP file. The application has not been initialized, for more information execute javaws/browser from the command line and send a bug report. at net.sourceforge.jnlp.Launcher.launchApplication(Launcher.Java:582)
...
Running jdk9+ ?
Java.lang.ClassNotFoundException: Sun/misc/JarIndex
...
Java.io.FileNotFoundException: /home/roman/.config/icedtea-web/deployment.properties (No existe el archivo o el directorio) at Java.base/Java.io.FileInputStream.open0(Native Method)
ClassNotFoundException:Sun/misc/JarIndexは、このクラスがJava 9.で削除されているように見えるため、jdk11への依存によるものであると私に思わせました。
Openjdk-8のみをインストールして、ソースからicedteaをビルドしてみました。それにもかかわらず、私が終了したとき、Firefoxによって検出されませんでした(おそらく、いくつかのコマンドが欠落していた)。
何か案が?
また、これらのコマンドの出力を以下に示します(回答に従ってインストールを試みた後):
roman@roman-desktop:~$ update-Java-alternatives -l
Java-1.11.0-openjdk-AMD64 1111 /usr/lib/jvm/Java-1.11.0-openjdk-AMD64
Java-1.8.0-openjdk-AMD64 1081 /usr/lib/jvm/Java-1.8.0-openjdk-AMD64
roman@roman-desktop:~$ which javaws
/usr/bin/javaws
試行錯誤の末、有用な解決策が1つだけ見つかりました。以前のUbuntu 16.04 LTSから通常のOpenJDK 8を以下のコマンドを使用して手動でインストールする必要があります。通常は推奨されませんが、他の方法で肯定的な結果を得ることはできません。
したがって、インストールするコマンドは次のとおりです(既存のOpenJDKを削除してから、deb-packagesを手動でインストールします)。
Sudo apt purge Oracle-Java11-* -y
Sudo apt purge *openjdk* -y
Sudo apt autoremove --purge -y
wget http://mirrors.kernel.org/ubuntu/pool/main/o/openjdk-8/openjdk-8-jre-headless_8u222-b10-1ubuntu1~16.04.1_AMD64.deb
Sudo apt install -y ./openjdk-8-jre-headless_8u222-b10-1ubuntu1~16.04.1_AMD64.deb
wget http://security.ubuntu.com/ubuntu/pool/main/libp/libpng/libpng12-0_1.2.54-1ubuntu1.1_AMD64.deb
Sudo apt install -y ./libpng12-0_1.2.54-1ubuntu1.1_AMD64.deb
wget http://mirrors.kernel.org/ubuntu/pool/main/o/openjdk-8/openjdk-8-jre_8u222-b10-1ubuntu1~16.04.1_AMD64.deb
Sudo apt install -y ./openjdk-8-jre_8u222-b10-1ubuntu1~16.04.1_AMD64.deb
wget http://mirrors.kernel.org/ubuntu/pool/universe/i/icedtea-web/icedtea-netx-common_1.6.2-3ubuntu1_all.deb
Sudo apt install -y ./icedtea-netx-common_1.6.2-3ubuntu1_all.deb
wget http://mirrors.kernel.org/ubuntu/pool/universe/i/icedtea-web/icedtea-netx_1.6.2-3ubuntu1_AMD64.deb
Sudo apt install -y ./icedtea-netx_1.6.2-3ubuntu1_AMD64.deb
また、以下の単一の長いコマンドを使用して、そのようなパッケージのバージョンを固定/保持する必要があります。
cat <<EOF | Sudo tee /etc/apt/preferences.d/pin-Java8
Package: icedtea-netx
Pin: version 1.6.2-3ubuntu1
Pin-Priority: 1337
Package: icedtea-netx-common
Pin: version 1.6.2-3ubuntu1
Pin-Priority: 1337
Package: openjdk-8-jre
Pin: version 8u222-b10-1ubuntu1~16.04.1
Pin-Priority: 1337
Package: openjdk-8-jre-headless
Pin: version 8u222-b10-1ubuntu1~16.04.1
Pin-Priority: 1337
EOF
そして、アプリケーションは
javaws StartProRealTime.jnlp
注:OracleのインストールJava 11または12も役に立ちません。
私のシステムでは、default-jre-headless
(icedtea-netx
の依存関係)がリンクを作成したため(これによって変更されていなかったため)、javaws
がまだjre-11(これは機能しません)を使用しようとしていることがわかりましたupdate-Java-alternatives
)。
$ javaws
selected jre: /usr/lib/jvm/default-Java
javaws
を再度実行するために、jre-8バージョンを指すようにシンボリックを手動で変更する必要がありました。
デフォルトのJava-8またはJava-11を設定できました。
$ Sudo update-Java-alternatives --jre --set Java-1.8.0-openjdk-AMD64
$ Sudo update-Java-alternatives --jre-headless --set Java-1.8.0-openjdk-AMD64
$ Sudo update-Java-alternatives --set Java-1.8.0-openjdk-AMD64
update-alternatives: error: no alternatives for appletviewer
update-alternatives: error: no alternatives for mozilla-javaplugin.so
update-Java-alternatives: jdk alternative does not exist: /usr/lib/jvm/Java-8-openjdk-AMD64/bin/appletviewer
update-Java-alternatives: jdk alternative does not exist: /usr/lib/jvm/Java-8-openjdk-AMD64/bin/jconsole
update-Java-alternatives: plugin alternative does not exist: /usr/lib/jvm/Java-8-openjdk-AMD64/jre/lib/AMD64/IcedTeaPlugin.so
$ Sudo update-Java-alternatives --jre --set Java-1.11.0-openjdk-AMD64
$ Sudo update-Java-alternatives --jre-headless --set Java-1.11.0-openjdk-AMD64
$ Sudo update-Java-alternatives --set Java-1.11.0-openjdk-AMD64
update-alternatives: error: no alternatives for appletviewer
update-alternatives: error: no alternatives for mozilla-javaplugin.so
次に、いずれかのコマンドで変数Java_HOMEを適切に設定します
$ export Java_HOME=$(readlink -f /usr/bin/Java | sed "s:bin/Java::")
$ export Java_HOME=$(readlink -f /usr/bin/Java | sed "s:jre/bin/Java::")
$ echo $Java_HOME
変数の値を確認することは価値があります。
実行中
$ javaws filename.jnpl
私はいくつかの警告と応答を持っています
netx:無効なjnlpファイル/home/phobos/express.jnpl
Express.jnplは https://www.ariscommunity.com/aris-express/download のARISエクスプレスモデリングツールです。
それぞれの応答は
$ javaws ~/express.jnpl
selected jre: /usr/lib/jvm/Java-8-openjdk-AMD64/jre/
(Java:11196): dbind-WARNING **: 19:40:56.468: Couldn't register with accessibility bus: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.
netx: Invalid jnlp file /home/phobos/express.jnpl
$ javaws ~/express.jnpl
selected jre: /usr/lib/jvm/Java-11-openjdk-AMD64/
WARNING: package javax.jnlp not in Java.desktop
netx: Invalid jnlp file /home/phobos/express.jnpl
これで、jnplファイルまたは私の設定のどちらが間違っているかを見つけることが残っています。
解決済み-間違ったファイル名を使用した。それは現在働いています。
$ javaws ~/express.jnlp
selected jre: /usr/lib/jvm/Java-8-openjdk-AMD64/jre/
selected jre: /usr/lib/jvm/Java-8-openjdk-AMD64/jre/
Codebase matches codebase manifest attribute, and application is signed. Continuing. See: http://docs.Oracle.com/javase/7/docs/technotes/guides/jweb/security/no_redeploy.html for details.
Starting application [com.idsscheer.aris.expresslauncher.AExpressLauncher] ...
May 02, 2019 6:36:28 PM com.idsscheer.aris.common.ADebug println
INFO: [config] creating plugin.cfg from jar file
現在のバージョン8u212でokを実行しています。 Java_HOMEの名前を永続的に変更する必要があります。
それは明らかにOracleに関連しています。私はOracleをアンインストールしましたJavaかなり前のことです(まだ解決策が見つかりませんでした)。Unityを使用してUbuntu 19.04を使用しています。
以下、特に「選択されたjre」を参照してください
$ update-Java-alternatives -l
Java-1.11.0-openjdk-AMD64 1111 /usr/lib/jvm/Java-1.11.0-openjdk-AMD64
Java-1.8.0-openjdk-AMD64 1081 /usr/lib/jvm/Java-1.8.0-openjdk-AMD64
$ Java -version
openjdk version "11.0.3" 2019-04-16
OpenJDK Runtime Environment (build 11.0.3+7-Ubuntu-1ubuntu1)
OpenJDK 64-Bit Server VM (build 11.0.3+7-Ubuntu-1ubuntu1, mixed mode, sharing)
$ which javaws
/usr/bin/javaws
$ javaws
selected jre: /usr/lib/jvm/Java-8-Oracle
thread 'main' panicked at 'Error spawning JVM process, Java executable: [/usr/lib/jvm/Java-8-Oracle], arguments: [["-splash:/usr/share/icedtea-web/javaws_splash.png", "-Xbootclasspath/a:/usr/share/icedtea-web/javaws.jar:/usr/share/Java/js.jar:/usr/share/Java/tagsoup.jar:/usr/lib/jvm/Java-8-Oracle/lib/ext/nashorn.jar:", "-classpath", "/usr/lib/jvm/Java-8-Oracle/lib/rt.jar:/usr/lib/jvm/Java-8-Oracle/lib/ext/jfxrt.jar:", "-Dicedtea-web.bin.name=javaws", "-Dicedtea-web.bin.location=/usr/lib/icedtea-web/bin/javaws", "net.sourceforge.jnlp.runtime.Boot"]]', src/os_access.rs:36:19
note: Run with `Rust_BACKTRACE=1` for a backtrace
古いOracleインストールが環境変数を設定したままにしていたことがわかりました。
% env | grep Oracle
Java_HOME=/usr/lib/jvm/Java-8-Oracle
J2REDIR=/usr/lib/jvm/Java-8-Oracle/jre
DERBY_HOME=/usr/lib/jvm/Java-8-Oracle/db
J2SDKDIR=/usr/lib/jvm/Java-8-Oracle
unset
tingしたものjavaws
Oracle以外のJREを取得します。
Icedteaコントロールパネルでjdk8ディレクトリを設定して、これを修正しました。コントロールパネルを開き、JVM設定に移動して、フィールドに次の情報を入力しました。
/ usr/lib/jvm/Java-8-openjdk-AMD64
Ubuntu 18.04を実行していて、jdk11とjdk8の両方がインストールされています。通常、Java-defaultはjdk11にリンクされているため、一部のクラスが削除されているためにicedteaがクラッシュします。