Eclipse ne peut pas charger les bibliothèques SWT


295

Chaque fois que j'essaie d'ouvrir Eclipse dans Ubuntu 12.04, j'obtiens une erreur de lien insatisfait et il ne s'ouvre pas. J'ai récemment installé le Java JDK et le SDK Android, cela pourrait-il être le problème? J'ai suivi ce tutoriel .

Voici les informations du journal:

!SESSION 2012-04-15 21:05:46.902 -----------------------------------------------
eclipse.buildId=I20110613-1736
java.version=1.7.0
java.vendor=Oracle Corporation
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_GB
Command-line arguments:  -os linux -ws gtk -arch x86_64

!ENTRY org.eclipse.osgi 4 0 2012-04-15 21:05:47.885
!MESSAGE Application error
!STACK 1
java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons: 
no swt-gtk-3740 in java.library.path
no swt-gtk in java.library.path
Can't load library: /home/tom/.swt/lib/linux/x86_64/libswt-gtk-3740.so
Can't load library: /home/tom/.swt/lib/linux/x86_64/libswt-gtk.so

at org.eclipse.swt.internal.Library.loadLibrary(Library.java:285)
at org.eclipse.swt.internal.Library.loadLibrary(Library.java:194)
at org.eclipse.swt.internal.C.<clinit>(C.java:21)
at org.eclipse.swt.internal.Converter.wcsToMbcs(Converter.java:63)
at org.eclipse.swt.internal.Converter.wcsToMbcs(Converter.java:54)
at org.eclipse.swt.widgets.Display.<clinit>(Display.java:132)
at org.eclipse.ui.internal.Workbench.createDisplay(Workbench.java:695)
at org.eclipse.ui.PlatformUI.createDisplay(PlatformUI.java:161)
at org.eclipse.ui.internal.ide.application.IDEApplication.createDisplay(IDEApplication.java:153)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:95)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
at org.eclipse.equinox.launcher.Main.main(Main.java:1386)

J'ai essayé de désinstaller et de réinstaller et de supprimer le ~/.eclipserépertoire, mais cela ne fonctionne toujours pas


Je dois dire que le chemin de votre bibliothèque semble étrange. Ces fichiers .so ne devraient-ils pas se trouver quelque part dans le dossier eclipse / plugins, dans un bocal éclaté? Avez-vous même un tel répertoire (~ / .swt / lib / ...)?
Marko Topolnik

Avez-vous installé libswt-java-gtk3?
Federico Vera du

Bien qu'il soit répondu ci-dessous, il semble que cela reste un bogue dans le système d'installation d'Ubuntu qui devrait être soulevé, car il persiste même si je désinstalle et réinstalle eclipse en utilisant aptitude / apt-get. S'il y a un lien vers ce problème, il serait bon de le fournir ici afin que les gens puissent le voter.
android.weasel

Réponses:


661

sur mon Ubuntu 12.04 32 bits . J'édite la commande pour:

ln -s /usr/lib/jni/libswt-* ~/.swt/lib/linux/x86/

Et sur Ubuntu 12.04 64 bits, essayez:

ln -s /usr/lib/jni/libswt-* ~/.swt/lib/linux/x86_64/

4
J'ai exécuté cette commande exactement comme vous l'avez et cela a fonctionné! Ubuntu 12.04 avec Oracle Java 7
MJ

2
Je préférerai cette méthode car je dois utiliser Oracle Java 7 pour un projet
rojanu

2
Je vous remercie. Mon chemin était légèrement différent, mais cela l'a fixé pour moi. ln -s /usr/lib/jni/libswt-* ~/.swt/lib/linux/x86/
Art

2
C'est la deuxième fois que je dois faire cela: une fois sur mon ordinateur de travail il y a quelques mois, et tout à l'heure sur mon ordinateur personnel, les deux fois après des mois d'utilisation d'Eclipse sans un seul problème. Y a-t-il des raisons particulières pour lesquelles les bibliothèques swt disparaîtraient tout simplement?
jonhopkins

2
C'est un véritable épargnant de vie! Notez que quiconque sur ARM (comme moi exécutant Eclipse sur Chromebook) devrait remplacer "x86" par "arm" sinon cela ne fonctionnera pas!
PoweredByRice

54

RESOLU:

Parce que j'avais installé Oracle Java 7, il avait changé le Java par défaut en Oracle Java 7, mais il devait être l'Open JDK.

Pour réparer, ouvrez le terminal et tapez

sudo update-alternatives --config java

Cela fait apparaître une liste des différents types de Java. Sélectionnez simplement l'Open JDK.


7
mais que se passe-t-il si vous souhaitez utiliser Oracle Java avec éclipse, et non Open JDK, comment pourrait-on faire cela? Merci!
ultrajohn

est-ce parce qu'Oracle Java 7 ne cherche plus de bibliothèque native dans les Jars? J'ai également le même problème sur Windows avec Java 7. le programme swt fonctionnait très bien
Wudong

A travaillé pour moi pour Linux Mint Maya.
rshahriar

1
Bien sûr, si vous préférez les logiciels libres, OpenJDK est la plate-forme de choix, mais (comme d'habitude avec ces troglodytes d'entreprise) Oracle impose certains crochets dans leur version qui empêche le portage de certaines applications (et la plupart des applications de démarrage Web java) entre les plates-formes java. Cela va à l'encontre de l'objectif principal de Java, à savoir la portabilité, c'est pourquoi ils se tirent dans le pied en pratiquant le verrouillage des fournisseurs ... Vive le Python! Longue vie!
venzen

44

Spécifiez simplement le chemin d'accès aux bibliothèques:

echo "-Djava.library.path=/usr/lib/jni/" >> /etc/eclipse.ini

2
Semble que c'est la solution la plus propre.
mspanc

1
D'accord, plus propre et cette méthode évitera définitivement l'erreur sur un système Ubuntu sujet aux changements de version Java - étant donné l'effet secondaire des mises à niveau d'OpenJDK pour reconfigurer les emplacements de fichiers liés à java
venzen

2
A travaillé pour moi sur la solution Ubuntu 64 bits la plus propre en effet, je recommande à quiconque de choisir cette solution au lieu de créer les liens symboliques
Toughy

c'est celui à utiliser si vous utilisez oracle java 7 et pas ouvert JDK
James Kirkby

La réponse la plus votée fonctionne, mais pas lorsque vous "éclipse sudo". Cette réponse est supérieure, elle fonctionne dans tous les cas!
PoweredByRice

14

Dans mon cas, le /usr/lib/jnirépertoire me manquait complètement. Fixé par

sudo apt-get install libswt-gtk-3-jni libswt-gtk-3-java

Pas besoin de créer un lien symbolique par la suite. Eclipse a démarré normalement.


2
Après avoir installé jni. J'ai copié des fichiers en utilisant cette commande pour 32 bits: ln -s / usr / lib / jni / libswt- * ~ / .swt / lib / linux / x86 /
padman

1
Dans mon cas, j'avais besoin de sudo apt-get install libswt-gtk-4-jni libswt-gtk-4-java
aleixrocks

4
Impossible de charger la bibliothèque: /home/tom/.swt/lib/linux/x86_64/libswt-gtk-3740.so
Impossible de charger la bibliothèque: /home/tom/.swt/lib/linux/x86_64/libswt-gtk.so

il semble que les bibliothèques devraient être dans .swt / lib / linux / x86_64 / s'il n'y en a pas, vous pouvez essayer cette commande:

recherchez libswt-gtk.so

cela devrait trouver que les bibliothèques copient le répertoire entier dans /home/tom/.swt/lib/linux/x86_64


je fais face à une erreur similaire sous linux 64 bits, pouvez-vous vérifier cette question, stackoverflow.com/questions/21980558/…
Helping Hand ..

3

Je suis d'accord avec Scott, ce qu'il a énuméré a fonctionné. Cependant, l'exécuter à partir de n'importe quel répertoire n'a pas fonctionné. J'ai du cd sur les fichiers / home / * /.swt/lib/linux/x86_64/ 0

répertoire d'abord, puis exécutez la commande de lien:

Pour 32 bits:

ln -s /usr/lib/jni/libswt-* ~/.swt/lib/linux/x86/

Et sur Ubuntu 12.04 64 bits:

ln -s /usr/lib/jni/libswt-* ~/.swt/lib/linux/x86_64/

3

Sur redhat7:

yum install gtk2 libXtst xorg-x11-fonts-Type1

a fait le travail, en raison d'une dépendance swt.

trouvé ici


2

Si vous démarrez eclipse à l'aide d'Oracle Java, alors eclipse peut échouer dans la recherche de bibliothèques natives comme les bibliothèques SWT ou SVN. Les bibliothèques SWT-JNI sont situées dans / usr / lib / jni / et les bibliothèques SVN-JNI sont situées dans / usr / lib / x86_64-linux-gnu / jni /.

Au lieu de démarrer eclipse avec la commande

eclipse

vous pouvez utiliser la commande

env LD_LIBRARY_PATH=/usr/lib/jni/:/usr/lib/x86_64-linux-gnu/jni/:$LD_LIBRARY_PATH eclipse

pour passer la variable d'environnement LD_LIBRARY_PATH à éclipse. Eclipse trouvera les bibliothèques natives et fonctionnera correctement.


Cela me donne cette erreur Java HotSpot(TM) 64-Bit Server VM warning: Ignoring option MaxPermSize; support was removed in 8.0 WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by org.eclipse.osgi.internal.baseadaptor.BaseStorage (file:/usr/lib/eclipse/plugins/org.eclipse.osgi_3.8.1.dist.jar) to method java.net.URLClassLoader.addURL(java.net.URL) WARNING: Please consider reporting this to the maintainers of org.eclipse.osgi.internal.baseadaptor.BaseStorage Comment puis-je le résoudre?
Yonela Nuba

1

Je suis tombé sur cette erreur lorsque j'ai essayé de démarrer la génération 32 bits d'Eclipse sous Linux 64 bits. Le problème a été résolu après l'installation du package ia32-libs.


0

Veuillez vous assurer que votre partition domestique est montée avec des autorisations exécutables. C'est la valeur par défaut, mais si vous le montez sans l'option exec, vous obtiendrez cette erreur.


0

Une méthode peut-être plus générique consiste à:

  • installer la version sans tête de l'openjdk,
  • installer, exécuter et fermer eclipse.
  • désinstaller l'openjdk
  • installer le JDK d'Oracle


0

Pour le sous-système Windows pour Linux (WSL), vous aurez besoin

apt install libswt-gtk-4-jni

Si vous n'avez pas d'OpenJDK 8, vous aurez également besoin

apt install openjdk-8-jdk
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.