2013-10-13 95 views
0

在Eclipse中調試一個相對較小的程序時,我在瀏覽時看到「未找到源代碼」錯誤。其他問題表明,這通常是導入/ jar問題。在這種情況下,我沒有導入的jar文件,沒有什麼特別的,只有src/default包中的類。Java,Eclipse,「未找到源代碼」

的特定行爲是這樣的:

如果調試器被指向哪個實例化新的對象的線(例如,「富富=新的Foo();」),其中類,富,在的問題是在相同的源代碼目錄中並且有一個有效的構造函數,發生以下兩件事之一:

1)或者:打到F5會帶我進入類和構造函數簽名;隨後的F5會帶我到可怕的「Source Not Found」錯誤;

2)或:按F5將帶我馬上到「源Not Found」錯誤

在任何情況下,我可以繼續調試....排序。例如,調試會話將繼續並逐步推進結果,以進一步完成程序。 (如果我在沒有調試器的情況下運行這個程序,或者在這些位置沒有斷點,我沒有看到任何問題,打到F8並進入下一個斷點通常會讓我無法解決問題。)

Java Build路徑源設置正確(項目的src子目錄,這是默認軟件包所在的位置).Java Build Path庫除了JRE系統庫外沒有任何東西,據我所知沒有名稱衝突。我想不出任何其他我需要做的Java構建路徑。

這可能與我正在用調試器尋找的錯誤(NaN在數值應用中的擴散)無關,但它令人分心,並且阻礙了我找到問題根源的能力。

具體問題:什麼導致了這種行爲?還是預期的行爲,我以前沒有注意到?

編輯:包括代碼

Loop2: for (int depth = 0; depth < maxDepth; depth++) { 
     for (int node = 0; node < policy.numMemory; node++) { 
      Belief belief = new Belief(messages, node); 
      nodeTraces[node] = new nodeTrace(policy, pomdp, messages, belief, depth); 
      if (nodeTraces[node].bestGain > bestGain) {bestTrace = node; bestGain = nodeTraces[node].bestGain; } 
     } 
     if (bestGain > 0.01) { System.out.println("breaking"); break Loop2; } 
    } 

在高於Belief belief = new Belief(messages, node);設置斷點,和按F5將產生源在調試器未找到的消息。從A類代碼片段是:

public class Belief { 

int numStates; 
double[] belief; 

public Belief(Messages messages, int node) { 
    // do some stuff 
} 

我再次強調,在這個項目中的任何地方,沒有包含的包。所有類都是我的,並駐留在項目自己的源目錄中,該目錄包含在Java Build Path的源選項卡中。如果上面的建議鏈接解釋了這裏發生的事情,即使在閱讀了三次之後,我也沒有看到它,如果有人用我的口吻向我解釋這一點,我將不勝感激。

+2

讓社區決定它是否是重複的:) –

+0

夠公平的。我只是在說,我首先看。 – Novak

+1

你可以發佈代碼嗎? – newtonrd

回答

0

Eclipse可能缺少標準庫的來源,即JDK。

這可以通過Preferences - > Java - > Installed JRE來設置。

+0

將默認值從jdk1.7.0_40更改爲jre7並再次返回;兩種設置的行爲都沒有變化。 – Novak

+0

是否有該JDK的源代碼附件?例如,你可以打開java.lang.Object作爲類型並查看源代碼嗎? –