Só consigo descobrir que o Cassandra suporta JDK17, e nenhuma especificação de sabor Java. Primeiro, instalei o OpenJDK11 e recebi a mesma mensagem abaixo.
Então descobri que o Cassandra 5.0 suporta apenas JDK17. Tudo bem, eles provavelmente deveriam mudar a mensagem se for o caso, mas tudo bem. Então instalei o OpenJDK17 e ainda recebi o abaixo.
$ which java
/usr/lib/jvm/java-17-openjdk-amd64/bin/java
$ java -version
openjdk version "17-ea" 2021-09-14
OpenJDK Runtime Environment (build 17-ea+11-Ubuntu-114.042)
OpenJDK 64-Bit Server VM (build 17-ea+11-Ubuntu-114.042, mixed mode, sharing)
vm1@ubuntu:/opt/apache-cassandra-5.0.0/bin$ ./cassandra
Cassandra 5.0 requires Java 11 or Java 17.
Então tentei com Oracle Java 17, o mesmo. O que dá?
$ which java
/usr/lib/jvm/java-17-oracle/bin/java
$ java -version
java version "17.0.6" 2023-01-17 LTS
Java(TM) SE Runtime Environment (build 17.0.6+9-LTS-190)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.6+9-LTS-190, mixed mode, sharing)
vm1@ubuntu:/opt/apache-cassandra-5.0.0/bin$ ./cassandra
Cassandra 5.0 requires Java 11 or Java 17.
Então o Cassandra determina sua versão da JVM com este código em cassandra.in.sh :
Quando eu forço as
java -version
saídas que você mostrou acima, minha variável forshort
é igual a 17. Isso deve estar bom.No entanto, acima desse bloco de código há outro que verifica a presença de uma
$JAVA_HOME
env var. Se isso estiver definido no seu ambiente, é o que é usado.Uma coisa que você pode tentar é editar a mensagem de erro no seu arquivo local bin/cassandra.in.sh para incluir o número da versão com falha:
Estou curioso para ver o que isso diria.
Fundo
Por muito tempo, o Apache Cassandra só funcionou com o Java 8. Em 2015, o trabalho começou a adicionar suporte para versões mais recentes do Java, particularmente Java 9 e 10. No entanto, as coisas mudaram em 2017, quando a Oracle anunciou um ciclo de lançamento de 6 meses , o que significava que os lançamentos do Java atingiriam o EOL em um ritmo rápido.
Suporte LTS
Como resultado, a comunidade Cassandra decidiu certificar apenas lançamentos Java com suporte de longo prazo (LTS). No C* 4.0, o suporte para Java 11 LTS foi adicionado ( CASSANDRA-9608 , CASSANDRA-16894 ) para que funcionasse tanto com Java 8 quanto com 11 .
O Cassandra 5.0 adicionou suporte para Java 17 LTS e retirou o suporte para Java 8 ( CASSANDRA-18255 ), o que significa que o C* 5.0 funciona com Java 11 e 17 .
Seu ambiente
Pelo exposto acima, espero que esteja claro quais versões do Java são suportadas e que o problema está na VM que você está executando, porque os sintomas apontam para um problema subjacente no ambiente do sistema operacional/shell.
Suspeito que você tenha várias versões do Java instaladas e o sistema esteja confuso sobre qual instalação do Java está configurada.
Quando você executa o
bin/cassandra
script para iniciar o Cassandra, ele também executa obin/cassandra.in.sh
script ( linha 82 ), que então verifica a versão do Java instalada .Você precisa depurar o script para descobrir por que ele não está funcionando na sua VM. A primeira coisa é verificar se
JAVA_HOME
(1) está definido no seu perfil de shell e (2) está apontando para uma instalação Java que você não esperava.Se
JAVA_HOME
não estiver definido, então (3) execute o seguinte comando para avaliar qual instalação Java foi escolhida pelo shell:Se for um link simbólico, (4) rastreie-o até identificar a instalação.
Se tudo mais falhar, depure
cassandra.in.sh
e execute os comandos linha por linha, particularmente da linha 99, até identificar a causa raiz. Saúde!