0

String을 한 클래스에서 다른 클래스의 함수로 전달하는 동안 NullPointerException이 발생합니다. 나는 무엇이 잘못되었는지 정확하게 이해하지 못합니다. 나는 또한 내가 통과하는 문자열이 null인지 아닌지 확인하려고 노력했다. 그러나 Null이 아닙니다.두 클래스에서 문자열을 전달하는 동안 오류가 발생했습니다. JavaFX

예외가 지적되고 AMCHelpEditor에서 함수가 호출되는 곳은 아래에 있습니다 (이 코드의 오류는 마지막 줄에 있습니다 : 원래 코드의 125) :

String s = AMCImage.getSmellFromAMC(file); 
System.out.print(s); 
System.out.print(s.isEmpty()); 
System.out.print(SMCImage.getSmellFromAMC(f)); 
GridPane grid = sm.AMCEdit(s); 

또한 AMCEditor에 AMCEdit 기능 코드 :

public GridPane AMCEdit(String s){ 
    amc = am.readAllAmcName(); 
    AMCBean sb2 = new AMCBean(); 
    AMCAccessor sa = new AMCAccessor(); 
    sb2 = sa.getAllAmcInfoById(s); 
    String name = sb2.getAmcName(); 
    gridPane.setPadding(new Insets(20, 0, 20, 20)); 
    gridPane.setHgap(7); gridPane.setVgap(7); 

    Label amc1 = new Label("Select AMC :"); 
    GridPane.setHalignment(smell1, HPos.RIGHT); 


    cb = new ChoiceBox(); 
    cb.setItems(FXCollections.observableArrayList(amc)); 
    cb.getSelectionModel().select(name); 



    cb.valueProperty().addListener(new ChangeListener() { 
     @Override 
     public void changed(ObservableValue observable, Object oldValue, 
      Object newValue) { 
      text =cb.getValue().toString(); 
      xyz = sm.getAllAmcInfoByName(text); 
      descptn = xyz.getAmcDesc().toString(); 
      frmla = xyz.getAmcChemFormula().toString(); 
      am = xyz.getAmcId(); 
      setAmc(am); 
      tfdesc = new TextField(descptn);   
      tffrml = new TextField(frmla); 
      } 
    }); 


    gridPane.add(amc1, 0, 0); 
    gridPane.add(cb, 1, 0); 

     gridPane.getColumnConstraints().addAll(
     new ColumnConstraints(150), 
     new ColumnConstraints(200) 
    ); 
      gridPane.getRowConstraints().addAll(
      new RowConstraints(30), 
      new RowConstraints(), // scale 
      new RowConstraints(30), 
      new RowConstraints(), 
      new RowConstraints(30), 
      new RowConstraints(), 
      new RowConstraints(30) 

    ); 

    return gridPane; 

} 

시스템 출력으로 도시 오류 :

java.lang.NullPointerException 
    at com.smell.component.AMCEditor.AMCEdit(AMCEditor.java:125) 
    at com.smell.component.AMCHelpEditor.getTab(AMCHelpEditor.java:74) 
    at com.smell.modules.ImageApi$1$1$1.handle(ImageApi.java:100) 
    at com.smell.modules.ImageApi$1$1$1.handle(ImageApi.java:96) 
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:69) 
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:217) 
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:170) 
    at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:38) 
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:37) 
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92) 
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35) 
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92) 
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35) 
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92) 
    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:53) 
    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:28) 
    at javafx.event.Event.fireEvent(Event.java:171) 
    at javafx.scene.Node.fireEvent(Node.java:6863) 
    at javafx.scene.control.Button.fire(Button.java:179) 
    at com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(ButtonBehavior.java:193) 
    at com.sun.javafx.scene.control.skin.SkinBase$4.handle(SkinBase.java:336) 
    at com.sun.javafx.scene.control.skin.SkinBase$4.handle(SkinBase.java:329) 
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:64) 
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:217) 
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:170) 
    at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:38) 
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:37) 
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92) 
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35) 
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92) 
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35) 
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92) 
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35) 
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92) 
    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:53) 
    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:33) 
    at javafx.event.Event.fireEvent(Event.java:171) 
    at javafx.scene.Scene$MouseHandler.process(Scene.java:3324) 
    at javafx.scene.Scene$MouseHandler.process(Scene.java:3164) 
    at javafx.scene.Scene$MouseHandler.access$1900(Scene.java:3119) 
    at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1559) 
    at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2261) 
    at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:228) 
    at com.sun.glass.ui.View.handleMouseEvent(View.java:528) 
    at com.sun.glass.ui.View.notifyMouse(View.java:922) 
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) 
    at com.sun.glass.ui.win.WinApplication.access$100(WinApplication.java:29) 
    at com.sun.glass.ui.win.WinApplication$2$1.run(WinApplication.java:67) 
    at java.lang.Thread.run(Thread.java:722) 
'201''201'false'201'Exception in thread "JavaFX Application Thread" jfxsa-run: 
,536,

시스템 출력이 예상대로입니다 (오류의 마지막 줄 참조). 문자열이 Null이 아니면

오류를 지적하거나 대안을 제안 해 주시겠습니까?

답변

0

나는 그 대신 널 (null)에 대한 문자열을 확인하는 것보다, 당신의 SM 개체에 대한

sm.AMCEdit (들) 널 체크를 넣어 제안;

여기 SM 개체가 초기화되지 않았하고 그래서 당신이 그것을 initialzed했는지 확인

NPE

가 발생합니다 초기화되지 않은 SM의 메소드를 호출하려고합니다.

+0

sm 객체는 null이 아닙니다 .. 항상 초기화됩니다 .. 디버깅으로도 확인했습니다 ... –

관련 문제