mauvais ELFE classe: ELFCLASS32
J'obtiens cette erreur de pointage pour certains .si le fichier lors de l'exécution de mon application sur un ordinateur Solaris. Toutefois, l'application fonctionne très bien dans ma machine Windows. Si je ne me trompe pas, ma demande est attendu pour la version 64 bits mais je n'ai qu'une version 32 bits de l' .donc fichier dans l'ordinateur Solaris. Est-il possible que je peux résoudre ce problème donc il va utiliser la version 32 bits à la place? Je comprends qu'il n'a rien à voir avec le bytecode, mais probablement avec la JVM. J'ai essayé de courir à l'aide de -d32 ou -d64, mais il n'a pas d'effet.
Mise à JOUR:
C'est l'erreur exacte:
Exception in thread "main" java.lang.UnsatisfiedLinkError: librvjs11.so: ld.so.1: java: fatal: librvjs11.so: wrong ELF class: ELFCLASS32<br>
at java.lang.ClassLoader$NativeLibrary.load(Native Method)<br>
at java.lang.ClassLoader.loadLibrary0(Unknown Source)<br>
at java.lang.ClassLoader.loadLibrary(Unknown Source)<br>
at java.lang.Runtime.loadLibrary0(Unknown Source)<br>
at java.lang.System.loadLibrary(Unknown Source)<br>
J'ai déjà mis à jour LD_LIBRARY_PATH, il comprend le répertoire contenant le fichier ci-dessus.
jasonline signifie un "mauvais ELFE de la classe d'erreur". Si vous avez déjà vu un, il ne donne pas beaucoup d'informations -- juste le nom de fichier. Il signifie que l'application est d'essayer d'utiliser un binaire 32 bits dans un environnement 64 bits.
Je sais à quoi il correspond. L'important cependant est qu'il peut être signalé dans le contexte d'une UnsatisfiedLinkError. Par conséquent, sans connaître l'échec impliqués, et les fichiers en question, il va être très difficile pour aider à résoudre les problèmes. J'aurais suggérant de regarder le contenu de LD_LIBRARY_PATH, mais ce serait présomptueux.
merci pour la clarification.
vous êtes les bienvenus. Pour l'instant, votre réponse pourrait aider l'OP effectuer certaines de dépannage de base, mais tant qu'il est connu que la bibliothèque de chargement a échoué, j'ai peur, il y a très peu d'psychique de débogage que l'on peut faire.
OriginalL'auteur jasonline | 2011-05-30
Vous devez vous connecter pour publier un commentaire.
Basé sur la conversation dans l'autre réponse, il a été déduit que la JVM est un processus 64 bits. Cela a été confirmé à l'aide de la
pflags
commande Solaris.Apparemment le
-d32
drapeau passé à la JVM a été ignorée. Cela était dû à la possibilité de la JVM être un 64-bit, qui a été incapable de fonctionnement dans le mode 32 bits. La résolution pourrait donc être d'installer une version 32 bits de la JVM, et utiliser le même.OriginalL'auteur Vineet Reynolds
Ce que je pense qui se passe est que votre application utilise une bibliothèque qui dispose de sa propre binaires pré-compilés, et ceux qui sont en 32 bits.
Vos options sont, soit pour obtenir une version 64 bits de fichiers binaires, ou la force de java à exécuter en 32 bits qui est ce
-d32
est censé faire.Cependant, peut la jvm sur cette machine en 32 bits? Si il ne peut pas alors la
-d32
sera la cause de java à cracher un avertissement qu'il ne peut pas s'exécuter en 32 bits et qu'il continuera en 64 bits.Êtes-vous de cette mise en garde?
Je suis CW depuis Vineet est en train de faire tous les aider.
vous pourriez vouloir vérifier si l'-d32 drapeau a été transmis correctement à la JVM, probablement à l'aide de /usr/ucb/ps -auxww. En outre, vous pouvez également vouloir vérifier si 32-bits et 64 bits des bibliothèques sont mélangés. C'est bizarre si les deux -d32 et -d64 drapeaux rapport aux mêmes résultats.
À droite, j'ai utilisé le fichier /usr/ucb/ps pour voir si l'-d32 s'affiche mais je ne le vois pas. Aucune idée pourquoi?
êtes-vous à l'aide d'un script qui démarre la JVM? Si oui, vous pourriez souhaitez déboguer le script. Cependant, je ne voudrais pas être trop préoccupés par cette conclusion j'attends de la JVM pour fonctionner en mode 32 bits par défaut.
Correct, même si je ne spécifiez pas -d32, il aurait du s'exécuter comme une application 32 bits, mais je suis confus parce qu'il m'a donné l'erreur ci-dessus. J'ai pensé que si votre application est en cours d'exécution sur 32 bits, il y a aussi 32 bits des bibliothèques.
OriginalL'auteur