Eclipse SWT kütüphanelerini yükleyemiyor


295

Ubuntu 12.04'te Eclipse'i her açmaya çalıştığımda tatminsiz bir bağlantı hatası alıyorum ve açılmıyor. Java JDK ve Android SDK'yı yakın zamanda yükledim, bu sorun olabilir mi? Bu dersi takip ettim .

Günlük bilgileri:

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

~/.eclipseDizini kaldırıp yeniden yüklemeyi denedim ancak hala çalışmıyor


Kütüphane yolunuzun garip göründüğünü söylemeliyim. Bu .so dosyaları eclipse / plugins klasöründe, patlamış bir kavanoz içinde olmamalıdır? Böyle bir dizininiz bile var (~ / .swt / lib / ...)?
Marko Topolnik

Libswt-java-gtk3'ü yüklediniz mi?
Federico Vera

Bu aşağıda yanıtlansa da, Ubuntu'nun kurulum sisteminde yükseltilmesi gereken bir hata olmaya devam ediyor, çünkü yetenek / apt-get kullanarak tutulmayı kaldırıp yeniden yüklesem bile devam ediyor. Bu konuyla ilgili bir bağlantı varsa, burada bunu sağlamak iyi olur, böylece millet bunu onaylayabilir.
android.weasel

Yanıtlar:


661

benim Ubuntu 12.04 32 bit . Komutu:

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

Ve Ubuntu 12.04 64 bit üzerinde deneyin:

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

4
Bu komutu aynen senin gibi uyguladım ve işe yaradı! Oracle Java 7 ile Ubuntu 12.04
MJ

2
Oracle Java 7'yi bir proje için kullanmak zorunda olduğum için bu yöntemi tercih edeceğim
rojanu

2
Teşekkür ederim. Yolum biraz farklıydı ama bu benim için düzeltildi. ln -s /usr/lib/jni/libswt-* ~/.swt/lib/linux/x86/
Sanat

2
Bunu ikinci kez yapmak zorunda kaldım: birkaç ay önce iş bilgisayarımda bir kez ve şimdi ev bilgisayarımda, Eclipse'yi aylarca iki kez tek bir sorun olmadan kullandıktan sonra. SWT kütüphanelerinin ortadan kaybolmasının belirli bir nedeni var mı?
jonhopkins

2
Bu gerçek hayat kurtarıcı! ARM'de kim olursa olsun (Chromebook'ta Eclipse'i çalıştırıyormuşum gibi) "x86" yerine "kol" yazmalıdır, aksi takdirde çalışmaz!
PoweredByRice

54

ÇÖZÜLDÜ:

Oracle Java 7'yi yüklediğim için varsayılan Java'yı Oracle Java 7 olarak değiştirmişti, ancak Open JDK olması gerekiyordu.

Düzeltmek için terminali açın ve yazın

sudo update-alternatives --config java

Bu, farklı Java türlerinin bir listesini getirir. Açık JDK'yı seçmeniz yeterlidir.


7
ama Oracle Java'yı tutulma ile kullanmak ve Open JDK'yi kullanmak istemiyorsanız, bunu nasıl yapabilirsiniz? Teşekkürler!
ultrajohn

Java 7 artık kavanozlarda yerel kütüphane aramak için değil mi? Java 7 ile pencerelerde de aynı sorunum var.
swt

Benim için linux nane maya için çalıştı.
rshahriar

1
Tabii ki, FOSS'u tercih ederseniz, OpenJDK tercih edilen platformdur, ancak (her zamanki gibi bu şirket troglodytlerinde olduğu gibi) Oracle, sürümlerinde java platformları arasında bazı uygulamaların (ve çoğu java webstart uygulaması) taşınmasını önleyen belirli kancalar uygular. Bu, Java'nın ana hedefini, yani taşınabilirliği yendi, bu yüzden satıcı kilitleme işlemini uygulayarak kendilerini ayağa vuruyorlar ... Long Live the Python! Çok yaşa!
venzen

44

Kitaplıkların yolunu belirtmeniz yeterlidir:

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

2
Bunun en temiz çözüm olduğu anlaşılıyor.
mspanc

1
Kabul, en temiz ve bu yöntem, Java sürüm değişikliklerine eğilimli bir Ubuntu sistemindeki hatayı kalıcı olarak önleyecektir - java ile ilgili dosya konumlarını yeniden yapılandırmak için OpenJDK yükseltmelerinin yan etkisi göz önüne alındığında
venzen

2
Gerçekten Ubuntu 64-bit Temiz çözüm üzerinde benim için çalıştı, herkes
semboller

oracle java 7 kullanıyorsanız ve JDK'yı açmazsanız kullanacağınız kişi budur
James Kirkby

En çok oy verilen cevap işe yarar, ama "sudo eclipse" için geçerli değildir. Bu cevap üstündür, her durumda işe yarar!
PoweredByRice

14

Benim durumumda, /usr/lib/jnidizini tamamen kaçırıyordum . Tarafından düzeltildi

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

Daha sonra simgelemeye gerek yok. Tutulma normal şekilde başladı.


2
Jni yükledikten sonra. Bu komutu 32 bit için dosyaları kopyaladım: ln -s / usr / lib / jni / libswt- * ~ / .swt / lib / linux / x86 /
padman

1
Benim durumumda, sudo apt-get install gerekli libswt-gtk-4-jni libswt-gtk-4-java
aleixrocks

4
Kütüphane yüklenemiyor: /home/tom/.swt/lib/linux/x86_64/libswt-gtk-3740.so
Kütüphane yüklenemiyor: /home/tom/.swt/lib/linux/x86_64/libswt-gtk.so

kütüphanelerin .swt / lib / linux / x86_64 / adresinde olması gerektiği gibi görünüyor. Orada yoksa bu komutu deneyebilirsiniz:

libswt-gtk.so dosyasını bulun

bu, kütüphanelerin tüm dizini /home/tom/.swt/lib/linux/x86_64 dizinine kopyaladığını bulmalıdır.


Linux 64 bit benzer bir hatayla karşılaşıyorum, bu soruyu kontrol edebilir misiniz, stackoverflow.com/questions/21980558/…
Helping Hand ..

3

Scott'a katılıyorum, listelediği şey işe yaradı. Ancak sadece herhangi bir dizinden çalıştırmak işe yaramadı. / Home / * /.swt/lib/linux/x86_64/ 0 dosyalarına cd almak zorunda kaldım

önce dizin ve sonra link komutunu çalıştırın:

32 bit için:

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

Ve Ubuntu 12.04 64 bit'te:

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

3

Redhat7 üzerinde:

yum install gtk2 libXtst xorg-x11-fonts-Type1

SWT bağımlılığı nedeniyle işi yaptı.

burada bulundu


2

Tutulmayı oracle java kullanarak başlatırsanız, tutulma SWT veya SVN kütüphaneleri gibi yerel kütüphaneleri bulmada başarısız olabilir. SWT-JNI kütüphaneleri / usr / lib / jni / dizininde bulunur ve SVN-JNI kütüphaneleri / usr / lib / x86_64-linux-gnu / jni / dizininde bulunur.

Tutulmayı komutla başlatmak yerine

eclipse

komutu kullanabilirsiniz

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

tutulmaya ortam değişkeni LD_LIBRARY_PATH geçirilir. Eclipse yerel kütüphaneleri bulur ve düzgün çalışır.


Bu bana bu hatayı veriyor 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 Nasıl çözebilirim?
Yonela Nuba

1

64-bit linux altında Eclipse'nin 32-bit derlemesini başlatmaya çalışırken bu hatayla karşılaştım. Sorun ia32-libs paketi yüklendikten sonra çözüldü.


0

Lütfen ana bölümünüzün yürütülebilir izinlerle bağlandığından emin olun. Bu varsayılan, ancak exec seçeneği olmadan bağlarsanız, bu hatayı alırsınız.


0

Muhtemelen daha genel bir yöntem:

  • openjdk'nin başsız sürümünü yükleyin,
  • tutulmayı kurun, çalıştırın ve kapatın.
  • openjdk'yi kaldır
  • Oracle'ın JDK'sını yükle


0

Linux için Windows Alt Sistemi (WSL) için ihtiyacınız olacak

apt install libswt-gtk-4-jni

Eğer bir OpenJDK 8'iniz yoksa,

apt install openjdk-8-jdk
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.