2013-04-06 15 views
1

我從eclipse調試器中收到以下錯誤:local variable unavailable。 試圖儘可能地修剪代碼。問題很簡單,我必須使用Divise類中的DivisiveUI UpdateLog()方法,使用Cluster類中的變量。 Divise有一個包含所有集羣的列表。分裂和分裂UI有相互之間的關係。我如何能夠訪問Divisive類中的變量:sumDistance,avgDistance? 試圖在Divisive類中編寫方法,仍然無法訪問所需的變量: 謝謝!java本地變量不可用

在log.append(text +「\ n」);未找到來源。

分裂:

package clusters; 

     import java.util.LinkedList; 

     public class Divisive implements Runnable 
     { 
      LinkedList<Record> mainTable; 
      LinkedList<Cluster> clusterList; 
      int meassureType; 
     DivisiveUI parent; 
     int clusterCount; 

     Divisive(LinkedList<Record> mainTable, DivisiveUI parent) 
     { 
      this.parent=parent; 
      this.mainTable=new LinkedList<Record>(mainTable); 
      setMeassureType(0); 
     } 

    } 

DivisiveUI:

package clusters; 



@SuppressWarnings("serial") 
public class DivisiveUI extends JPanel implements Runnable{ 

    ClusteringSelection parent; 
    Divisive divisive; 
    JTextField clusterCount; 
    JTextArea log; 

    public void UpdateLog(String text) 
    { 
     log.append(text+"\n"); 
     log.setCaretPosition(log.getDocument().getLength()); 
    } 
} 

集羣:

package clusters; 


public class Cluster 
{ 
    LinkedList<Record> table; 
    LinkedList<MatrixRow> matrix; 

    LinkedList<Double> center; 
    double sumDistance; 
    double avgDistance; 

    int meassureType; 
} 
+3

哪行代碼導致錯誤?你能顯示實際的完整錯誤文本嗎? – 2013-04-06 12:57:28

+0

你無處可初始化'log'變量.. !! – 2013-04-06 13:10:59

+0

我說我剪了代碼+如果它沒有被初始化,我不會得到一個無法訪問變量的錯誤。 – MustSeeMelons 2013-04-06 13:17:54

回答

7

如果調試器不能存取權限的局部變量,這意味着,該碼具有不編譯時加入了字節碼中的本地變量調試信息。

檢查如何編譯類,並確保此信息位於已編譯的類中。如果使用了javac,則添加-g選項以添加所有調試信息。

+0

謝謝,但我正在使用Eclipse,我該如何實現這一目標? – MustSeeMelons 2013-04-06 14:09:58

+1

對於如何在Eclipse中做到這一點看看這裏:http://stackoverflow.com/questions/5080912/java-error-eventdispatchthread-run-line-not-available-local-variables-unava – 2014-10-27 08:29:49