멋진 솔루션은 아니지만 작동합니다.

멋진 솔루션은 아니지만 작동합니다.

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 파일에 저장됩니다.오라클의 문서예를 들어). JAR 파일은 서명되어 있고 API는 일반적으로 시스템 속성 변경을 금지하므로 버전을 변경하기 위해 어떤 작업도 수행할 필요가 없습니다.

추가 자료:

답변2

귀하의 애플리케이션이 Java용 Oracle을 찾고 있다면 이에 대한 이유가 있을 수 있다고 생각해 보셨습니까? Java 버전이 실제로 중요하지 않다고 생각한다면 Java로 스크립트 프런트엔드를 작성하고 버전을 요청할 때 Oracle Java를 모방하도록 할 수 있습니다. 하지만 애플리케이션이 버전을 확인할 유일한 것은 아닐 것이라고 확신하며, 다양한 항목을 필터링하기 위해 매우 복잡한 스크립트를 작성하게 될 것입니다. 아이디어이긴 하지만 개인적으로는 구현을 권장하지 않습니다.

관련 정보