2015-04-24 6 views
1

Im вызывающего DataComparison()Cant методов доступа из другого класса

public class SteganographyGUI { 

    ... 

    DataComparison dataComp; 
    dataComp = new DataComparison(); 

} 

public int getLSB(){ 
    String x = fileChooser1.getSelectedFile().getAbsolutePath(); 
    x = x.substring(x.length() - 10, x.length() - 9); 
    return Integer.parseInt(x); 
} 

когда некоторые критерии. Моя проблема заключается в том, что, когда я пытаюсь получить доступ getLSB с помощью gui.getLSB()

public class DataComparison { 

    public static SteganographyGUI gui; 

    ... 


    public DataComparison(){ 

     lsb = gui.getLSB(); 

    } 
    public static void main(String[] args) { 
     gui = new SteganographyGUI(); 
     gui.setVisible(true); 
    } 

Ошибка появляется - Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException

Как я могу это исправить?

+0

Можете ли вы поделиться трассировку стека, за исключением вы получаете? –

+0

Возможный дубликат [Что такое исключение Null Pointer Exception и как его исправить?] (Http://stackoverflow.com/questions/218384/what-is-a-null-pointer-exception-and-how-do -i-fix-it) – copeg

+0

Мое предположение - это то, что в первой строке getLSB есть null, скорее всего файл. – mcallinder

ответ

1

Вы пытаетесь вызвать getLSB() в своем классе DataComparison, но вы не дадите ему ссылку на ваш класс SteganographyGUI. Поэтому измените следующую строку:

DataComparison dataComp; 
dataComp = new DataComparison(); 

к:

DataComparison dataComp; 
dataComp = new DataComparison(this); 

и изменить конструктор, а также:

public DataComparison(SteganographyGUI guiRef){ 
    gui = guiRef; 
} 
+0

Работает как очарование. спасибо :) – InnZaayynn

+1

@Enzo, вам больше всего нравится :) – alainlompo

0

Вы делаете циклические вызовы в вашем коде. Попробуйте еще один класс только для основных и вызывать его методы в следующем порядке:

class 1: `public class SteganographyGUI {...}` 

class 2: `public class DataComparison {...} 

class 3: 

`public class XXXX { 
public static void main(String[] args) { 
     gui = new SteganographyGUI(); 
     gui.setVisible(true); 
    } 
}` 

I have helped :) 
1

При попытке запустить статическим «гуй» переменной

gui = new SteganographyGUI(); 

выполнение SteganographyGUI класса конструктора, который (возможно,) звонки DataComparison класс конструктор

public DataComparison(){ 

    lsb = gui.getLSB(); 

} 

, который использует статическую переменную «gui», которая еще не установлена. Именно по этой причине вы получили «java.lang.NullPointerException».

Да, я знаю, что «сообщение исключение является недостоверным» :)

+0

Спасибо за ответ :) – InnZaayynn

Смежные вопросы