Eclipse tidak dapat memuat pustaka SWT

295

Setiap kali saya mencoba untuk membuka Eclipse di Ubuntu 12,04 saya mendapatkan Kesalahan Tautan Tidak Puas dan tidak akan terbuka. Saya baru saja menginstal java JDK dan Android SDK, mungkinkah ini masalahnya? Saya mengikuti tutorial ini .

Berikut ini info lognya:

!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)

Saya telah mencoba menghapus dan menginstal ulang, dan menghapus ~/.eclipsedirektori tetapi masih tidak berhasil

TomRichardson
sumber
Saya harus mengatakan jalur perpustakaan Anda terlihat aneh. Bukankah seharusnya file .so tersebut berada di suatu tempat di dalam folder eclipse / plugins, di dalam stoples yang meledak? Apakah Anda bahkan memiliki direktori seperti itu (~ / .swt / lib / ...)?
Marko Topolnik
Apakah Anda menginstal libswt-java-gtk3?
Federico Vera
Meskipun ini dijawab di bawah ini, tampaknya ini tetap merupakan bug dalam sistem instalasi Ubuntu yang harus dimunculkan, karena tetap ada bahkan jika saya menghapus dan menginstal ulang gerhana menggunakan aptitude / apt-get. Jika ada tautan ke masalah itu, akan lebih baik untuk menyediakannya di sini agar orang-orang dapat meningkatkannya.
android.weasel

Jawaban:

661

di Ubuntu 12,04 32 bit saya . Saya mengedit perintah untuk:

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

Dan pada Ubuntu 12,04 64 bit coba:

ln -s /usr/lib/jni/libswt-* ~/.swt/lib/linux/x86_64/
Scott
sumber
4
Saya menjalankan perintah itu persis seperti yang Anda miliki dan berhasil! Ubuntu 12,04 dengan Oracle Java 7
MJ
2
Saya lebih suka metode ini karena saya harus menggunakan Oracle Java 7 untuk proyek
rojanu
2
Terima kasih. Jalan saya sedikit berbeda tetapi ini memperbaikinya bagi saya. ln -s /usr/lib/jni/libswt-* ~/.swt/lib/linux/x86/
Seni
2
Ini adalah kedua kalinya saya harus melakukan ini: sekali di komputer kerja saya beberapa bulan yang lalu, dan sekarang di komputer rumah saya, kedua kali setelah berbulan-bulan menggunakan Eclipse tanpa masalah tunggal. Apakah ada alasan khusus mengapa perpustakaan swt akan hilang begitu saja?
jonhopkins
2
Ini adalah penyelamat nyata! Perhatikan siapa pun yang menggunakan ARM (seperti saya menggunakan Eclipse di Chromebook) harus mengganti "x86" dengan "arm" jika tidak, itu tidak akan berfungsi!
PoweredByRice
54

TERPECAHKAN:

Karena saya telah menginstal Oracle Java 7, itu telah mengubah Java default ke Oracle Java 7, namun itu harus Open JDK.

Untuk memperbaikinya, buka terminal dan ketik

sudo update-alternatives --config java

Ini menampilkan daftar berbagai jenis Java. Cukup pilih Open JDK.

TomRichardson
sumber
7
tetapi bagaimana jika Anda ingin menggunakan Oracle Java dengan eclipse, dan bukan Open JDK, bagaimana orang bisa melakukan itu? Terima kasih!
ultrajohn
Apakah ini karena Oracle Java 7 tidak mencari perpustakaan asli di Jars lagi? Saya memiliki masalah yang sama pada windows dengan Java 7 juga. program swt dulu berfungsi dengan baik
Wudong
Bekerja untuk saya untuk linux mint maya.
rshahriar
1
Tentu saja, jika Anda lebih suka FOSS, OpenJDK adalah platform pilihan, tetapi (seperti biasa dengan troglodytes korporat ini) Oracle memaksakan kait tertentu dalam versi mereka yang mencegah porting dari beberapa aplikasi (dan sebagian besar aplikasi webstart java) antara platform java. Ini mengalahkan tujuan utama Java, yaitu portabilitas, itulah sebabnya mereka menembak diri mereka sendiri dengan mempraktikkan vendor lock-in ... Long Live the Python! Panjang umur!
venzen
44

Cukup tentukan jalur ke perpustakaan:

echo "-Djava.library.path=/usr/lib/jni/" >> /etc/eclipse.ini
dzlatkov
sumber
2
Tampaknya ini adalah solusi terbersih.
mspanc
1
Setuju, terbersih dan metode ini secara permanen akan menghindari kesalahan pada sistem Ubuntu yang rentan terhadap perubahan versi Java - mengingat efek samping dari peningkatan OpenJDK untuk mengkonfigurasi ulang lokasi file terkait java
venzen
2
Bekerja untuk saya di Ubuntu, solusi Cleanest 64-bit, saya sarankan siapa pun memilih solusi ini daripada membuat symlink
Toughy
ini yang akan digunakan jika Anda menggunakan Java 7 oracle dan tidak membuka JDK
James Kirkby
Jawaban yang paling banyak dipilih berfungsi, tetapi tidak untuk saat Anda "gerhana sudo". Jawaban ini lebih unggul, itu berfungsi dalam semua kasus!
PoweredByRice
14

Dalam kasus saya, saya kehilangan /usr/lib/jnidirektori sepenuhnya. Diperbaiki oleh

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

Tidak perlu symlink sesudahnya. Gerhana dimulai dengan normal.

Trenton
sumber
2
Setelah menginstal jni. Saya menyalin file menggunakan perintah ini untuk 32 bit: ln -s / usr / lib / jni / libswt- * ~ / .swt / lib / linux / x86 /
padman
1
Dalam kasus saya, saya perlu sudo apt-get install libswt-gtk-4-jni libswt-gtk-4-java
aleixrocks
4
Tidak dapat memuat perpustakaan: /home/tom/.swt/lib/linux/x86_64/libswt-gtk-3740.so
Tidak dapat memuat perpustakaan: /home/tom/.swt/lib/linux/x86_64/libswt-gtk.so

sepertinya pustaka harus di .swt / lib / linux / x86_64 / jika tidak ada di sana Anda dapat mencoba perintah ini:

cari libswt-gtk.so

ini akan menemukan perpustakaan menyalin seluruh direktori ke /home/tom/.swt/lib/linux/x86_64

sherif
sumber
saya menghadapi kesalahan serupa di linux 64 bit, dapatkah Anda memeriksa pertanyaan ini, stackoverflow.com/questions/21980558/…
Helping Hand ..
3

Saya setuju dengan Scott, apa yang dia daftarkan berhasil. Namun hanya menjalankannya dari direktori apa pun tidak berhasil. Saya harus melakukan cd ke file / home / * /.swt/lib/linux/x86_64/ 0

direktori pertama dan kemudian jalankan perintah tautan:

Untuk 32 bit:

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

Dan di Ubuntu 12.04 64 bit:

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

Di redhat7:

yum install gtk2 libXtst xorg-x11-fonts-Type1

melakukan pekerjaan itu, karena ketergantungan swt.

ditemukan di sini

pengguna1767316
sumber
2

Jika Anda mulai eclipse menggunakan oracle java, maka eclipse mungkin gagal menemukan pustaka asli seperti pustaka SWT atau SVN. Perpustakaan SWT-JNI terletak di / usr / lib / jni / dan perpustakaan SVN-JNI terletak di / usr / lib / x86_64-linux-gnu / jni /.

Alih-alih memulai gerhana dengan perintah

eclipse

Anda bisa menggunakan perintah

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

untuk meneruskan variabel lingkungan LD_LIBRARY_PATH ke gerhana. Eclipse akan menemukan perpustakaan asli dan akan berjalan dengan baik.

pengguna1460856
sumber
Ini memberi saya kesalahan ini. 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 Bagaimana saya bisa menyelesaikannya?
Yonela Nuba
1

Saya menemukan kesalahan ini ketika mencoba memulai membangun 32-bit Eclipse di bawah 64-bit linux. Masalahnya terpecahkan setelah menginstal paket ia32-libs.

lancha90
sumber
0

Pastikan partisi rumah Anda dipasang dengan izin yang dapat dieksekusi. Itu adalah default, tetapi jika Anda memasangnya tanpa opsi exec, Anda akan mendapatkan kesalahan ini.

Martin B.
sumber
0

Metode yang mungkin lebih umum adalah:

  • instal versi openjdk tanpa kepala,
  • pasang, jalankan dan tutup gerhana.
  • uninstall openjdk
  • instal JDK oracle
pengguna1767316
sumber
0

Untuk Windows Subsystem untuk Linux (WSL) yang Anda butuhkan

apt install libswt-gtk-4-jni

Jika Anda tidak memiliki OpenJDK 8, Anda juga perlu

apt install openjdk-8-jdk
ATORRA
sumber