Cassandra Impossible d’initialiser la classe com.sun.jna.Native

J’ai la version 3.9 de Cassandra sur CentOS 7. Lors du démarrage de Cassandra Server, je reçois une erreur comme celle-ci:

TRACE [MemtableFlushWriter: 1] 2017-05-15 04: 25: 49,735 LogTransaction.java:264 – Fermeture du journal des transactions [mc_txn_flush_3f6a46f0-3961-11e7-87b4-0728ea39fb0d.log dans / var / lib / cassandra / data / system / local -7ad54392bcdd35a684174e047860b377]
ERREUR [principal] 2017-05-15 04: 25: 49,745 CassandraDaemon.java:747 – Exception rencontrée lors du démarrage java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.lang.NoClassDefFoundError: Impossible d’initialiser class com. sun.jna.Native à org.apache.cassandra.utils.FBUtilities.waitOnFuture (FBUtilities.java:403) ~ [apache-cassandra-3.9.0.jar: 3.9.0] à org.apache.cassandra.db.SystemKeyspace .forceBlockingFlush (SystemKeyspace.java:793) ~ [apache-cassandra-3.9.0.jar: 3.9.0] at org.apache.cassandra.db.SystemKeyspace.removeTruncationRecord (SystemKeyspace.java:639) ~ [apache-cassandra- 3.9.0.jar: 3.9.0] at org.apache.cassandra.db.ColumnFamilyStore.invalidate (ColumnFamilyStore.java:541) ~ [apache-cassandra-3.9.0.jar: 3.9.0] at org.apache. cassandra.db.ColumnFamilyStore.invalidate (ColumnFamilyStore.java:517) ~ [apache-cassandra-3.9.0.jar: 3.9.0] at org.apache.cassandra.schema.LegacySchemaMigrator.lambda $ unloadLegacySchemaTables $ 341 (LegacySchemaMigrator.java: 137) ~ [apache-cassandra-3.9.0.jar: 3.9 .0] at org.apache.cassandra.schema.LegacySchemaMigrator $$ Lambda $ 93 / 1308179535.accept (Source inconnue) ~ [na: na] à java.lang.Iterable.forEach (Iterable.java:75) ~ [na: 1.8.0_45] à org.apache.cassandra.schema.LegacySchemaMigrator.unloadLegacySchemaTables (LegacySchemaMigrator.java:137) ~ [apache-cassandra-3.9.0.jar: 3.9.0] at org.apache.cassandra.schema.LegacySchemaMigrator. migrer (LegacySchemaMigrator.java:83) ~ [apache-cassandra-3.9.0.jar: 3.9.0] at org.apache.cassandra.service.CassandraDaemon.setup (CassandraDaemon.java:254) [apache-cassandra-3.9. 0.jar: 3.9.0] at org.apache.cassandra.service.CassandraDaemon.activate (CassandraDaemon.java:601) [apache-cassandra-3.9.0.jar: 3.9.0] at org.apache.cassandra.service .CassandraDaemon.main (CassandraDaemon.java:730) [apache-cassandra-3.9.0.jar: 3.9.0]

Il existe une solution à ce problème ( défaillance de démarrage Cassandra sur une machine ARM64 (java.lang.NoClassDefFoundError: impossible d’initialiser la classe com.sun.jna.Native) ), Soultion suggère des modifications dans cassandra-env.sh . Je l’ai essayé mais cela ne fonctionne pas pour moi.

J’ai vérifié avec ces options (séparément) dans cassandra-env.sh

JVM_OPTS="$JVM_OPTS -Djava.io.tmpdir=/home/tech/cassandra/tmp" JVM_OPTS="$JVM_OPTS -Djava.io.tmpdir=/home/cassandra/tmp" JVM_OPTS="$JVM_OPTS -Djava.io.tmpdir=/var/lib/cassandra/tmp" 

même essayé avec

 JVM_OPTS="$JVM_OPTS -Dcassandra.boot_without_jna=true" 

Mais pas de changement dans le problème.

Et j’ai changé le cassandra logger en TRACE, mais il affiche le même journal des erreurs qu’il n’y avait pas de TRACE. Le fichier (jna-4.0.0.jar) est présent dans le dossier lib (/ usr / share / cassandra / lib). Je suis incapable de trouver la raison réelle.

Les raisons de ne pas travailler pour moi sont les suivantes:

  1. cassandra-env.sh est chargé par le serveur. (S’il est chargé, comment puis-je vérifier, s’il est chargé ou non)

  2. Il pourrait y avoir un autre problème.

Quelqu’un, S’il te plaît, laisse-moi sortir de ça.

Enfin le problème avec jna-4.0.0.jar.

Le fichier jna-4.0.0.jar dans la lib n’est pas en cours d’initialisation, j’ai donc modifié le fichier en créant un lien symbolique vers jna.jar.

 sudo yum install jna sudo ln -s (JAVA_PATH)/usr/share/java/jna.jar (CASSANDRA_PATH)/usr/share/cassandra/lib 

Ensuite, il a produit des erreurs concernant tmp , résolu avec les solutions précédentes.

En ce qui concerne la JNA, il y a déjà des questions là-bas, mais elles ne sont pas spécifiques.

J’ai rencontré le même problème. Nettoyer (rm -rf *) du dossier / tmp ou du dossier sur lequel “-Djava.io.tmpdir” pointe

Après avoir mis à niveau Java, la Cassandra n’a pas pu démarrer. Je l’ai réparé par.

1. mkdir -p / var / lib / cassandra / tmp chown cassandra: cassandra / var / lib / cassandra / tmp

2. Ajoutez le paramètre ci-dessous à la fin du fichier /cassandra-env.sh JVM_OPTS = “$ JVM_OPTS -Djava.io.tmpdir = / var / lib / cassandra / tmp”

Puis redémarré Cassandra.