Eclipse java hata ayıklama: kaynak bulunamadı


179

Eclipse bir Java uygulaması hata ayıklama sırasında iki durumda " Kaynak bulunamadı " hatası alıyorum:

  • Zaten içe aktarılmış olan farklı bir projedeki dosyaya geçme
  • Yüklü bir maven deposundaki bir dosyaya adım atma

Dosyalar orada, ancak tutulma bunlara adım atmıyor, bunun yerine " kaynak eklemek " için bir düğme gösteriyor

Eklemeyi denedim (bir değişken tanımlamak için bir iletişim kutusu açtı ?!) ve tutulma dosyaya atladı, ancak hata ayıklayıcı orada herhangi bir değişkeni denetleyemedi. Ayrıca, her bağımlılık için kaynağı manuel olarak eklemek pratik değil, çünkü benim durumumda binlerce bağımlılık dosyası var.

Ben tutulması \ java yeniyim , bu yüzden bunun neden olduğunu açıklamak + bunu nasıl çözeceğiniz çok yardımcı olacaktır!

Yanıtlar:


53

Eclipse hata ayıklama, aslında program tarafından yüklenen sınıf ile çalışır .

Açıkladığınız belirtiler, söz konusu sınıf gibi sesler projede bulunamadı, ancak birlikte çalıştığınız projeden önce hata ayıklama bilgisi bulunmayan bir dağıtım kavanozunda bulundu .

Bu birkaç nedenden dolayı olabilir, ancak bu davranışı gösteren sınıfların bulunduğu konuma bir göz atın (tanımlamak için gezinme bölmesine bakın). Bu kavanozu kullanmaktan kaçınmak ve bunun yerine JVM'nin projeyi kullanmasını sağlamak için büyük olasılıkla projenin oluşturma yolunu değiştirmeniz gerekecektir.

EDIT: 2018 itibariyle Maven gibi bir yapı çerçevesi kullanmak yaygındır, burada yapı yolu m2e eklentisi tarafından yönetilir, bu nedenle bu sorunun soru sorulduğundan çok daha az sıklıkta olması gerekir. Maven ve m2e kullanıyorsanız, Tercihler / Maven / "Artefakt Kaynaklarını İndir" seçeneğini etkinleştirdiğinizden emin olun veya Maven / "Download Sources" projesine sağ tıklayın.


Herkese merhaba teşekkürler ama bu cevabı daha yararlı buldum (akış bağlantısı üzerinde yığın) [ stackoverflow.com/questions/5815013/…
shareef

11
@shareef bu bağlantı eksik kaynağı değil, eksik javadoc ile ilgilidir.
Thorbjørn Ravn Andersen

@ACV Evet, evet. Belki de istediğiniz kadar ayrıntılı değildir - daha iyi açıklamak istediğiniz şeyi bana bildirir misiniz?
Thorbjørn Ravn Andersen

cevap başka bir yoludur: sorun "kaynak bulunamadı" ve benim önerim "kaynağı bulmaya çalışın"
Junchen Liu

1
@ dhein Çok daha ayrıntılı yeni bir soru açmayı düşünün.
Thorbjørn Ravn Andersen

301

Eclipse IDE'yi yapılandırmak için sadece 3 adım:

Not: Kaynak Arama yollarını güncelledikten sonra hata ayıklama oturumunuzu durdurup yeniden başlatmanız gerekir. Aksi takdirde, eksik kaynağı olan dosya "eksik kaynak" göstermeye devam eder.

Kaynak Aramasını Düzenle Seçili hata ayıklama hedefinin kaynak arama yolunda değişiklik yapmanızı sağlayan Kaynak Yolu İletişim Kutusunu açmak için Kaynak Aramasını Düzenle ... komutunu [Kaynak Aramasını Düzenle] seçin.

resim açıklamasını buraya girin

resim açıklamasını buraya girin

resim açıklamasını buraya girin

ÖNEMLİ Bu son adımdan sonra Eclipse'i yeniden başlatın .


7
Kaynak Arama'yı düzenlemek aslında benim için çalıştı. Teşekkürler Douglas Frari
stephen ebichondo

3
Tıkır tıkır çalışıyor. Teşekkürler!
Carlos Spohr

11
ve bu bile işe yaramazsa ... çünkü bu benim için çalışmıyor
Saras Arya

11
Önemli!! İyi çalıştı, ama sadece çalışan uygulamayı durdurduktan ve yeniden başlattıktan sonra. Bunu yapana kadar hala kaynakları alamıyor gibiydi.
Jeach

1
Aylardır bununla uğraşıyorum. Bu mükemmel çalıştı.
aCarella

45

Semptomlar, bulunan sınıfın ilişkili (veya atanmış) kaynağa sahip olmadığı durumu mükemmel bir şekilde tanımlar.

  • JDK sınıflarının kaynaklarını Tercihler> Java> Yüklü JRE'de ilişkilendirebilirsiniz . Kullanılacak JRE (JDK değil) varsayılan JRE olarak algılanırsa, JDK sınıflarınız eklenmiş kaynaklara sahip olmaz. Tüm JDK sınıflarının kaynak sağlamadığını, bazılarının yalnızca ikili biçimde dağıtıldığını unutmayın.
  • Projenin derleme yolundan, elle eklenen sınıflar, ilişkili kaynağı el ile eklemenizi gerektirir. Kaynak bir zip veya jar dosyasında, çalışma alanında veya dosya sisteminde bulunabilir. Eclipse zip dosyasını tarar, böylece kaynaklarınızın arşiv dosyasının kökünde olması gerekmez.
  • Sınıflar, başka bir eklentiden gelen bağımlılıklardan (maven, PDE, vb.). Bu durumda, kaynağın nasıl sağlanacağı eklentiye bağlıdır.
    • PDE , her eklentinin , eklentinin kaynağını içeren ilgili XXX.source paketine sahip olmasını gerektirir . Daha fazla bilgiyi burada ve burada bulabilirsiniz .
    • m2eclipse , varsa Maven bağımlılıkları için kaynakları ve javadokları alabilir. Bu özellik m2eclipse tercihlerini etkinleştirmelidir (seçenek, " Download source and javadocs " gibi bir adla belirtilmiştir .
    • Diğer eklentiler için belgelerine başvurmanız gerekir
  • Projenizden yüklenen sınıflar otomatik olarak projedeki kaynaklarla eşleştirilir.

Ama ya Eclipse hala benim sınıflarımı ve kaynaklarını doğru ayarlasam bile, kaynak eklemenizi önerirseniz:

Bu neredeyse her zaman Eclipse'nin sınıfı beklediğinizden farklı bir yerden bulduğu anlamına gelir. Yanlış sınıf alabileceği yeri görmek için kaynak arama yolunuzu inceleyin. Yolu bulgularınıza göre güncelleyin.

Kesme noktası vurulduğunda Eclipse hiçbir şey bulamaz:

Bu, kaynak arama yolu şu anda çalışma zamanında yüklü olan sınıfı içermiyorsa olur. Sınıf çalışma alanında olsa bile, başlatma yapılandırması için görünmez olabilir, çünkü Eclipse kaynak arama yolunu sıkı bir şekilde izler ve yalnızca şu anda hata ayıklanan projenin bağımlılıklarını ekler.

Bunun bir istisnası ayıklama demetleri olan PDE . Bu durumda, çalışma zamanı birbirine bağımlılık bildirmek zorunda olmayan birden fazla projeden oluştuğu için, Eclipse kaynak arama yolunda bulunmasa bile sınıfı otomatik olarak çalışma alanında bulur.

Bir kesme noktasına çarptığımda değişkenleri göremiyorum veya sadece kaynağı açıyor, ancak kesme noktası satırını seçmiyor:

Bu, çalışma zamanında JVM veya sınıfların kendilerinin gerekli hata ayıklama bilgilerine sahip olmadığı anlamına gelir. Sınıflar her derlendiğinde, hata ayıklama bilgileri eklenebilir. Sınıfların depolama alanını azaltmak için, bazen bu bilgi atlanır, bu da bu kodun hata ayıklamasını bir acı haline getirir. Tek şansınız hata ayıklama etkinken yeniden denemek ve derlemektir.

Eclipse kaynak görüntüleyicisi gerçekte yürütülen satırlardan farklı satırlar gösterir:

Bazen boş alanın da yürütüldüğünü gösterebilir. Bu, kaynaklarınızın sınıfların çalışma zamanı sürümüyle eşleşmediği anlamına gelir. Bunun mümkün olmadığını düşünseniz bile, bu yüzden doğru kaynakları ayarladığınızdan emin olun. Veya çalışma süreniz, ne yapmaya çalıştığınıza bağlı olarak en son değişikliklerinizle eşleşir.


Mükemmel cevap! Bu cevapta eksik olan bir tidbit OSGi paketlerine özgüdür: Bir paket OSGI-OPT / src içeriyorsa ve paket bir Eclipse projesinin oluşturma yolundaysa Eclipse kaynağı bulabilir. Ayrıntılar için bu diğer
yığın akışı

Belki bir göz alabilir bu - zaten denemek için ben şeyler tükendi ..
displayname

Bunu bildiğim iyi oldu. Teori çok, ama pratik bir çözüm yok.
MasterJoe2

11

Gönderen http://www.coderanch.com/t/587493/vc/Debugging-Eclipse-Source

"Hata ayıklama modunda çalışırken, iş parçacığına sağ tıklayın (iş parçacığı sekmesinde) ve Kaynak Aramasını Düzenle'yi seçin. Bu noktada, kaynak kodunuzu içeren gerekli proje / kavanozu ekleyebilmeniz gerekir."

Mevcut projemi bu şekilde ekledim ve sorunumu çözdü


Bunu "Uzak Java Uygulaması" veya "Java HotSpot VM" altında Hata Ayıklama görünümünde yapmak zorunda kaldım.
Abdull

9

Tutulma maven projemde de benzer bir sorun yaşadım. Bu sorunla çok uzun bir süre mücadele ettim, sonra projeyi yeniden inşa etmeye çalıştım.

mvn clean eclipse:eclipse

ve yardımcı oldu.

Not: İki yaklaşım çok farklı olduğu için bu yaklaşımı kullanmak m2e eklentisini karıştırır. m2e, projenize "Maven Bağımlılıkları" adlı sanal bir düğüm ekler ve Maven'den tüm bağımlılıkları oraya eklemesini ister.

mvn eclipse:eclipse, diğer taraftan, dosyada çok sayıda bireysel giriş oluşturur .classpath. Eclipse bunları projenize manuel olarak JAR eklediğiniz gibi işleyecektir.

Eclipse'deki sınıf yolunun nasıl çalıştığını bilmiyorsanız, bu yaklaşım önerilmez.


Sadece bu benim için de işe yarıyor! mvn eclipse:eclipseJava derleme yoluna proje bağımlılığı ekleyin, böylece çalışır. Ayrıca, m2eclipse eklentisi proje bağımlılığını sadece Kitaplıklar sekmesinde bulunan "Maven Bağımlılıkları" na ekler ve hata ayıklayıcı bulamaz.
saf

Ne olduğunu bilmiyorum ama bunu yaptıktan sonra artık "Maven Bağımlılıkları" altında maven bağımlılıklarımı görmüyorum.
görünen

6

Mevcut Hata Ayıklama Yapılandırmasını kaldırın ve yeni bir tane oluşturun. Bu sorunu çözmelidir.


Bunu takip ettim ve işe yaradı. Muhtemelen yeni çalıştır / hata ayıklama yapılandırmasının 'Kaynak' sekmesine istenen java proje klasörünü de eklediğimden. Belki sadece eksik kaynak klasörü / projeyi varolan çalıştırma / hata ayıklama yapılandırmasının 'Kaynak' sekmesine eklemek, önce onu silmek zorunda kalmadan çalışabilir.
xilef

6

Aynı sorunla karşı karşıyaydım, feryat adımları izledim.

Window=> Preferences=> Java=> Installed JREs,

resim açıklamasını buraya girin

Yukarıdaki ekranda Jre1.8.0_12seçildiğini görüyorsunuz .

kullandığınız JRE'yi seçin ve tıklayın Edit. Şimdi feryat ekranı görmelisiniz.

resim açıklamasını buraya girin

Dizine tıklayın, Jdk'ye göz atın, feryat ekran gibi görünmelidir. resim açıklamasını buraya girin

Tamam'ı tıklayın ve bitti


Eclipse Java çalışma zamanı (tam tür adı ile başlayan herhangi bir sınıf sınıfları yükleyemiyor, bu yaklaşımı kullanın java.gibi java.lang.String)
Aaron Digulla

4

Eclipse projemin kaynak kodunda hata ayıklama sorunu vardı. "Kaynak kodu düğümü bulundu" ile boş bir sayfa alıyordum.

Lütfen Kaynak kodu ekle düğmesini tıklayın. Ardından "varsayılan" klasörü silin ve ekle'yi tıklayın ve proje konumunuza gidin ve ekleyin. Bu benim için çalıştı


3

Benim durumumda, Kaynak aramasını düzenleme ve Ekleme projesinden sonra bile işe yaramadı. Projenin Derleme yolunu yapılandırdım.

resim açıklamasını buraya girin

Bundan sonra JRE Sistem Kütüphanesini seçtim ve işe yaradı.

resim açıklamasını buraya girin


2

Eclipse, bağımlı kavanozların kaynak kodunun nerede olduğunu otomatik olarak bilmiyor. Kaynak eklendikten sonra hata ayıklayıcının neden değişkenleri denetleyemediği açık değildir. Bir olasılık yanlış / uyumsuz kaynaktır.

Bir maven projeniz olduğunu ve bağımlılıkların kaynaklarının yerel depoda indirildiğini ve mevcut olduğunu varsayarsak , maven tutulma eklentisi olan m2eclipse'i yüklemek ve bunun sorununuzu gidermeye yardımcı olup olmadığını görmek isteyebilirsiniz.


1

Eclipse tarafından erişilebilen bir bağımlılığın kaynak koduna sahip olabilirsiniz. Ancak Eclipse, dinamik olarak yüklenen kodun kaynak kodunu bilmiyor. Örneğin Maven aracılığıyla.

Maven durumunda, run-jetty-run eklentisini kullanmanızı tavsiye ederim:

http://code.google.com/p/run-jetty-run/

Çözüm olarak, hata ayıklayıcı ile çalışan bir JVM'ye de bağlanabilirsiniz ve kodu görürsünüz. Alternatif olarak Eclipse için Dinamik Kaynak Arama eklentisini buradan kullanabilirsiniz:

https://github.com/ifedorenko/com.ifedorenko.m2e.sourcelookup

Maalesef boşluklu Windows yolları ile ilgili sorunları olduğu için bana yardımcı olmadı.

Eclipse Bugzilla ile ilgili bir geliştirme isteği doldurdum ve bu sorunu kabul ediyorsanız "Kaynak bulunamadı" sonsuza dek yok olmalı, lütfen burada oy verin:

https://bugs.eclipse.org/bugs/show_bug.cgi?id=384065

Teşekkürler!

Sasa


Artık bu hataya desteğim var!
Abdull

1

Benim durumumda "Kaynak Ekle", "Kaynak Ek Yapılandırması" paneline diğer maven proje dizinini ekledim. M2 deposundan en son sürümü kavanoz ekleyerek çalışmaz. Diğer maven projesindeki tüm sınıflar açılamadı.

resim açıklamasını buraya girin

Burada test tüm java kaynaklarını içeren diğer maven projemdi.



0

Ben de aynı problemi yaşadım. Benim durumumda, Window-Preferences-Java-Debug [Yakalanmayan istisnalarda yürütmeyi askıya al] seçeneğini devre dışı bıraktım. Sonra konsol bana doğru hatayı gösterdi: MySql kullanıcısı veritabanına erişim ayrıcalıklarına sahip değildi. Bu konuya göre.


0

Bilgi: Birkaç projeyle maven (pom.xml) kullandığınızda bu olası bir çözümdür.

Maven ile çalışıyorsanız, pom.xml'ye (örneğin 1.0.1-SNAPSHOT) göre hangi sürümü aldığınızdan emin olun. Kodunuzun güncel olması mümkün olabilir, ancak pom.xml bağımlılıklarınız hala eski JAR'ları / Anlık Görüntüleri (eski kodla) alıyor.

Sorunu bulma:

  • İlgili dosyada hata ayıklamaya çalışın.
  • Bu nedenle, ilgili kod alanında bir kesme noktası ayarlayın.
  • Ne zaman "kaynak bulunamadı" görüntülenir, (.java dosyası bulunabilir) sağ projede bağlama emin olun.
  • Derleme .class dosyası IDE düzenleyicisinde açılır.
  • Uygun JAR / Anlık Görüntüyü bulmak için "Editörle Bağlantılandır" ı tıklayın.
  • Şimdi bu JAR'ın en son sürüm olduğundan emin olun. Muhtemelen daha yenisi var. Bu durumda, pom.xml dosyasına en son sürüm numarasını yazın.
  • Sonra bir maven güncellemesi yapın ve doğru proje dizininde derleyin (örn. "Mvn clean install -U").

0

Tutulma veya STS kullanıyorsanız, lütfen GC'yi (GrepCode Eklentisi) yükleyin ve kullanın, bir süre kaynak .zip dosyasını proje yolunuza eklemenize gerek yoktur, böylece GrepCode sizin için iyi çalışır.


0

Eclipse Glassfish sunucu hata ayıklama ile ilgili bir sorun yaşadım. Bu, kaynak kodu farklı bir havuzdan (SVN'den GitHub'a değiştirerek) yükleyerek sağlandı. Bu süreçte, Glassfish sunucusu tarafından yanlış derlenmiş sınıflar kullanıldı ve bu nedenle, kaynak ve çalışma süresi boş satırlarda görünen kesme noktalarıyla senkronize olmayacaktı.

Bunu çözmek için, sınıflar dizininin üst klasörünü yeniden adlandırın veya silin; Glassfish, sınıf dosyalarını doğru derlenmiş sürümle güncellemek de dahil olmak üzere tüm sınıf dizin ağacını yeniden oluşturur.

Sınıflar dizini: / workspace / glassfish3122eclipsedefaultdomain / eclipseApps / <Web Uygulamanız> / WEB-INF / classes konumunda bulunur


0

Tomcat projeleri ile benim durumumda projeyi burada kontrol ettim: Pencere - Tercihler - Tomcat - Kaynak Yolu - Java yollarını kaynak yoluna ekle


0

Benim durumumda, başvurulan diğer projenin Maven sürümü test projesinin sürümüyle eşleşmedi. Aynı olduklarında, sorun ortadan kayboldu.


0

Hata ayıklama modunda çalışırken, iş parçacığından askıya alındıktan sonra Kaynak Aramasını Düzenle'yi tıklatın. Bu noktada, kaynak kodunuzu içeren gerekli projeyi / kavanozu ekleyebilmeliyiz. Mevcut projemi bu şekilde ekledikten sonra sorunumu çözdü. Teşekkürler



0

Bir veri kümesi içeren bir excel dosyası üzerinde işlem yapmak, sonra .csv dosyasına dönüştürmek için java kodu üzerinde çalışırken bu sorunu vardı, bu yazıya cevapları denedim, ama işe yaramadı. sorun kavanoz dosyalarının kendisiydi. gerekli jar dosyalarını tek tek indirdikten sonra (eski sürümler) ve bunları projeme ekledikten sonra, "kaynak bulunamadı" hatası ortadan kalktı. belki kavanoz dosyalarınızı kontrol edebilirsiniz. umarım bu yardımcı olur.


0

bu benim için çalıştı

projeye sağ tıklayın -> Özellikler -> Dağıtım Meclisi -> kavanozunuzu ekleyin


0

Eclipse'ta hata ayıklama yapılandırmasına gidin ve uygulamanızı çalıştırmak için aşağıdaki hedefi kullanın.

-Dmaven.surefire.debug

Örneğin

-Dmaven.surefire.debug exec: java


0

Benim için işe yarayan şey bu. Ben StackOverflow üzerinde her olası çözümü denedim. Hata ayıklama menüsünde kaynak konumumu değiştirmeyi denedim, m2e Eclipse eklentisini yükledim, gömülü Maven'den değiştirdim ve çalışma iskelesini çalıştırdım ve hiçbir şey işe yaramadı. Şimdi, harici bir kişinin kaynak kodunu görüntülemeye çalışmamaya dikkat edeceğim, sadece KENDİ kodumu görmek istedim, ama her zaman yazdığım yöntemlerime yazdığım yöntemlerde benim projemde, "Kaynak şimdi bulundu" hatası.

Sonunda bir uzmana sorduktan sonra, sorunum Eclipse'nin yaptığı ilk şeyin, hata ayıklama yığınından görebileceğiniz bir ClassLoader'ı çağırmasıydı. Tek yapmam gereken F6 (adım atmak) oldu ve sonra beni orijinal aramam ve sonra F5'e (adım adım) geri götürdü. Ve kodum vardı. Ah ... böyle basit bir düzeltme ama bir saat boşa.


0

Yeni başlayanlar için,

Jar dosyasının, Eclipse çalışma alanına henüz eklemediğiniz projenin bir parçası olma olasılığı vardır.

Bunun için jar dosyasının proje adını bilmeniz gerekir. Say, örneğin onun abc -18.0.0-SNAPSHOT.jar, bu proje sensin çalışma alanınıza dahil etmek gerekiyor demektir abc .


0

Tutulma 2019-03 (4.11.0) ile aynı sorunu yaşadım ve bunu sadece hata ayıklama modunda doğrudan hata ayıklama modunda başlatmak yerine uzaktan hata ayıklama yoluyla yaparak çözebildim.


0

Kaynak ekle -> Ekle -> Harici Arşiv -> kavanoz seçin -> açık -> bitti

yakalama kaynak kavanoz aramak ve bu kavanozu takın.

örneğin kavanoz "-sources" ile biter Stax2-api-3.4.1-sources


-1

Eğer maven java projenizde hata ayıklamaya çalışıyorsanız ve tutulma kaynağınızı bulamıyorsa, bunlardan birini deneyin.

  1. Bu satırları pom.xml dosyasına eklemeyi deneyin
<build>**<sourceDirectory>src/main/java</sourceDirectory>**...

Maven-> güncellemeyi deneyin ve ardından hata ayıklayın

  1. Projenin kök dizinine gidin;

mvn tutulması: tutulması

şimdi hata ayıklamayı dene


-1

Tutulma fotonunda "Pencere-> Tercihler-> Java-> Hata Ayıkla-> Gelişmiş kaynak aramayı kullan"

Düzenleme: Tutulma bu sürümünde Java uygulamalarında hata ayıklama sırasında bir "kaynak bulunamadı" iletisine yol açan ilgili bir hata var. Daha fazla ayrıntı için bugs.eclipse.org/bugs/show_bug.cgi?id=537699 hata raporuna bakın.


Tamam, tutulması bu sürümünde Java uygulamaları hata ayıklama sırasında bir "kaynak bulunamadı" iletisine yol açan ilgili bir hata var. Daha fazla bilgi için bugs.eclipse.org/bugs/show_bug.cgi?id=537699 hata raporuna bakın
6pi
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.