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

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

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は通常システム属性の変更を禁止するため、バージョンを変更するために何もする必要はありません。

追加資料:

答え2

あなたのアプリケーションがJava用Oracleを探している場合は、その理由があると思いましたか? Javaバージョンが実際には重要ではないと思われる場合は、Javaでスクリプトフロントエンドを作成し、バージョンを要求するときにOracle Javaを模倣することができます。しかし、アプリケーションがバージョンをチェックする唯一のものではないと確信しており、さまざまな項目をフィルタリングするために非常に複雑なスクリプトを書くことになります。アイデアではありますが、個人的には実装をお勧めしません。

関連情報