素晴らしいソリューションではありませんが、うまくいきます。

素晴らしいソリューションではありませんが、うまくいきます。

Javaアプリケーションがありますが動作しません。

Please install Java JRE 1.7.0_45 or a more recent version

Javaのバージョンとベンダーを確認しているようです。 openJDKにはベンダーをエミュレートする特別なオプションはありますか? Oracle Javaをインストールしたくありません。

これは私の結果ですjava -version

openjdk version "1.8.0_74"
OpenJDK Runtime Environment (build 1.8.0_74-b02)
OpenJDK 64-Bit Server VM (build 25.74-b02, mixed mode)

素晴らしいソリューションではありませんが、うまくいきます。

OpenJDKの近くにOracle JREをインストールしました。 Manjaro(Arch)Linuxでは非常に簡単です。

yaourt -S jre

インストールが完了すると、デフォルトのJavaを選択するように求められます。archlinux-java statusインストールされているJavaシステムを表示します。私はoracle jreを使用して気まぐれなアプリケーションを実行するための小さなスクリプトを作成しました。

#!/bin/sh
## Get first JRE from 
jrepath=$(archlinux-java status | grep 'jre' -m1 )
## remove spaces
jrepath=$(echo $jrepath | grep -v -e '^$')
## Compose full path
jrepath="/usr/lib/jvm/$jrepath/bin/java"
## Check if it works DEBUG ${jrepath} -version
${jrepath} -jar path/to/STM32CubeMX

また、スクリプトがあるフォルダからアプリケーションを実行したいと思います。

## Where is script
pushd `dirname $0` > /dev/null
SCRIPTPATH=`pwd -P`  ## -P to resolve symlinks
popd > /dev/null

${jrepath} -jar $SCRIPTPATH/STM32CubeMX

ベストアンサー1

いいえ、OpenJDKはこれを行いません。それぞれに自分自身を識別するベンダーのプロパティがあります。

値自体は、マニフェストの一部としてJARファイルに保存されます。Oracleのドキュメント例えば)。 JARファイルは署名されており、APIは通常システム属性の変更を禁止するため、バージョンを変更するために何もする必要はありません。

追加資料:

おすすめ記事