Como emular o Oracle Java com o OpenJDK?

1

Eu tenho um aplicativo java, que não costuma funcionar:

Please install Java JRE 1.7.0_45 or a more recent version

Acho que verifica a versão e o fornecedor do java. O openJDK tem opção especial para emular o fornecedor. Eu não quero instalar o Oracle Java.

Aqui está minha saída de 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)

Não é uma solução legal, mas funciona

Eu instalei o Oracle JRE perto do OpenJDK. No Manjaro (Arch) Linux é muito simples

yaourt -S jre

Após a instalação completa, ele pedirá que você selecione o java padrão. archlinux-java status mostra máquinas Java instaladas. Eu escrevi um pequeno script para rodar meu aplicativo caprichoso com 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

Além disso, eu queria executar o aplicativo da pasta em que o script é:

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

${jrepath} -jar $SCRIPTPATH/STM32CubeMX
    
por kyb 20.03.2016 / 20:58

2 respostas

1

Não, o OpenJDK não faz isso. Cada um tem uma propriedade de fornecedor para se identificar.

O valor em si é armazenado nos arquivos JAR, por exemplo, como parte do manifesto (veja Documentação do Oracle por exemplo). Como os arquivos JAR são assinados e a API geralmente proíbe que você altere uma propriedade do sistema, há pouco a ser feito para alterar a versão.

Leitura adicional:

por 20.03.2016 / 21:07
0

Se o seu aplicativo está procurando ou o Java da Oracle, você considerou que poderia ser por um motivo? Se você acha que a versão java realmente não importa, você pode escrever um front-end de script em seu java e imitar o java do Oracle quando a versão for solicitada. Mas tenho certeza de que a versão não será a única coisa que seu aplicativo estará verificando e você se verá escrevendo um script muito complexo para filtrar várias coisas diferentes. É uma ideia, mas eu pessoalmente não sugiro implementá-la.

    
por 20.03.2016 / 21:16

Tags