You need to find out exactly which expressional evaluates to null. My
guess is that tx_in.getConnectedOutput() returns null and then when
getScriptPubKey() is called on the null reference a NullPointerException
is thrown.



On 11/03/2019 20.37, J wrote:
> Should I make a toString() method there? 
> Also, if I try something like this, I get the same NPE.: 
> 
> transactionsList.setCellFactory(new Callback<ListView<Transaction>, 
> ListCell<Transaction>>() {
>     @Override
>     public ListCell<Transaction> call(ListView<Transaction> param) {
>         return new TextFieldListCell<Transaction>(new 
> StringConverter<Transaction>() {
>             @Override
>             public String toString(Transaction tx) {
>                 Coin value = tx.getValue(Main.bitcoin.wallet());
>                 if(value.isPositive()) {
>                     
>                     Address sender_address = null;
>                     for(TransactionInput tx_in : tx.getInputs()){
>                         if(!tx_in.isCoinBase()){
>                             
> 
>                             
> sender_address=tx_in.getConnectedOutput().getScriptPubKey().getToAddress(MainNetParams.get());
> 
> 
>                         }
>                     }
>                     return "Incoming payment of 
> "+MonetaryFormat.BTC.format(value) + " from: " + sender_address ;
>                 }
> 
> I'm using IntelliJ IDEA and when I use getScriptPubKey() it shows me this 
> message: 
> 
> Method invocation 'getScriptPubKey' may produce 'NullPointerException' 
> 
> I don't know if this might be useful to know if the problem comes from my 
> code, I just modified the wallettemplate.MainController class to check how 
> inputs/outputs work and I haven't done anything to the transaction "tx".
> 
>  
> 
> 
> 
> El lunes, 11 de marzo de 2019, 19:28:25 (UTC+1), Andreas Schildbach
> escribió:
> 
>     The NPE is happening in your own code.
> 
>     Bitcoinj 0.14.7 doesn't have a method
>     wallettemplate.MainController$1$1.toString().
> 
>     Maybe tx_out is null? TransactionOutput.getScriptPubKey() can hardly be
>     null, since an instance is created there and returned.
> 
> 
>     On 11/03/2019 12.39, J wrote:
>     > 0.14.7
>     >
>     > El lunes, 11 de marzo de 2019, 12:32:34 (UTC+1), Andreas Schildbach
>     > escribió:
>     >
>     >     Also, what version of bitcoinj are you using?
>     >
>     >
>     >     On 11/03/2019 10.02, J wrote:
>     >     > This is the exception:
>     >     > java.lang.NullPointerException
>     >     > at
>     >    
>     wallettemplate.MainController$1$1.toString(MainController.java:109)
>     >     > at
>     wallettemplate.MainController$1$1.toString(MainController.java:99)
>     >     > at
>     >    
>     javafx.scene.control.cell.CellUtils.getItemText(CellUtils.java:100)
>     >     > at
>     javafx.scene.control.cell.CellUtils.updateItem(CellUtils.java:201)
>     >     > at
>     >     >
>     >    
>     
> javafx.scene.control.cell.TextFieldListCell.updateItem(TextFieldListCell.java:201)
> 
>     >
>     >     > at javafx.scene.control.ListCell.updateItem(ListCell.java:471)
>     >     > at
>     javafx.scene.control.ListCell.lambda$new$41(ListCell.java:167)
>     >     > at
>     >     >
>     >    
>     
> javafx.collections.WeakListChangeListener.onChanged(WeakListChangeListener.java:88)
> 
>     >
>     >     > at
>     >     >
>     >    
>     
> com.sun.javafx.collections.ListListenerHelper$Generic.fireValueChangedEvent(ListListenerHelper.java:329)
> 
>     >
>     >     > at
>     >     >
>     >    
>     
> com.sun.javafx.collections.ListListenerHelper.fireValueChangedEvent(ListListenerHelper.java:73)
> 
>     >
>     >     > at
>     >     >
>     >    
>     
> javafx.collections.ObservableListBase.fireChange(ObservableListBase.java:233)
> 
>     >
>     >     > at
>     >    
>     javafx.collections.ListChangeBuilder.commit(ListChangeBuilder.java:482)
>     >     > at
>     >     >
>     >    
>     javafx.collections.ListChangeBuilder.endChange(ListChangeBuilder.java:541)
> 
>     >
>     >     > at
>     >     >
>     >    
>     
> javafx.collections.ObservableListBase.endChange(ObservableListBase.java:205)
> 
>     >
>     >     > at
>     >     >
>     >    
>     
> javafx.collections.ModifiableObservableListBase.addAll(ModifiableObservableListBase.java:113)
> 
>     >
>     >     > at
>     >     >
>     >    
>     
> com.sun.javafx.binding.ContentBinding$ListContentBinding.onChanged(ContentBinding.java:117)
> 
>     >
>     >     > at
>     >     >
>     >    
>     
> com.sun.javafx.collections.ListListenerHelper$SingleChange.fireValueChangedEvent(ListListenerHelper.java:164)
> 
>     >
>     >     > at
>     >     >
>     >    
>     
> com.sun.javafx.collections.ListListenerHelper.fireValueChangedEvent(ListListenerHelper.java:73)
> 
>     >
>     >     > at
>     >     >
>     >    
>     
> javafx.collections.ObservableListBase.fireChange(ObservableListBase.java:233)
> 
>     >
>     >     > at
>     >    
>     javafx.collections.ListChangeBuilder.commit(ListChangeBuilder.java:482)
>     >     > at
>     >     >
>     >    
>     javafx.collections.ListChangeBuilder.endChange(ListChangeBuilder.java:541)
> 
>     >
>     >     > at
>     >     >
>     >    
>     
> javafx.collections.ObservableListBase.endChange(ObservableListBase.java:205)
> 
>     >
>     >     > at
>     >     >
>     >    
>     
> javafx.collections.ModifiableObservableListBase.setAll(ModifiableObservableListBase.java:90)
> 
>     >
>     >     > at
>     wallettemplate.utils.BitcoinUIModel.update(BitcoinUIModel.java:68)
>     >     > at
>     >    
>     wallettemplate.utils.BitcoinUIModel.access$100(BitcoinUIModel.java:39)
>     >     > at
>     >     >
>     >    
>     
> wallettemplate.utils.BitcoinUIModel$1.onWalletChanged(BitcoinUIModel.java:58)
> 
>     >
>     >     > at org.bitcoinj.wallet.Wallet$4.run(Wallet.java:2919)
>     >     > at
>     >     >
>     >    
>     
> com.sun.javafx.application.PlatformImpl.lambda$null$177(PlatformImpl.java:295)
> 
>     >
>     >     > at java.security.AccessController.doPrivileged(Native Method)
>     >     > at
>     >     >
>     >    
>     
> com.sun.javafx.application.PlatformImpl.lambda$runLater$178(PlatformImpl.java:294)
> 
>     >
>     >     > at
>     >     >
>     >    
>     
> com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
> 
>     >
>     >     > at
>     >    
>     com.sun.glass.ui.win.WinApplication._enterNestedEventLoopImpl(Native
>     >     > Method)
>     >     > at
>     >     >
>     >    
>     
> com.sun.glass.ui.win.WinApplication._enterNestedEventLoop(WinApplication.java:204)
> 
>     >
>     >     > at
>     >    
>     com.sun.glass.ui.Application.enterNestedEventLoop(Application.java:511)
>     >     > at com.sun.glass.ui.EventLoop.enter(EventLoop.java:107)
>     >     > at
>     >     >
>     >    
>     
> com.sun.javafx.tk.quantum.QuantumToolkit.enterNestedEventLoop(QuantumToolkit.java:590)
> 
>     >
>     >     > at javafx.stage.Stage.showAndWait(Stage.java:474)
>     >     > at wallettemplate.utils.GuiUtils.runAlert(GuiUtils.java:52)
>     >     > at
>     >    
>     wallettemplate.utils.GuiUtils.lambda$crashAlert$1(GuiUtils.java:63)
>     >     > at wallettemplate.utils.GuiUtils.crashAlert(GuiUtils.java:67)
>     >     > at
>     >     >
>     >    
>     
> wallettemplate.utils.GuiUtils.lambda$handleCrashesOnThisThread$2(GuiUtils.java:75)
> 
>     >
>     >     > at
>     com.sun.glass.ui.Application.reportException(Application.java:453)
>     >     > at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
>     >     > at
>     >     >
>     >    
>     
> com.sun.glass.ui.win.WinApplication.lambda$null$152(WinApplication.java:177)
> 
>     >
>     >     > at java.lang.Thread.run(Thread.java:748)
>     >     >
>     >     > and this is the piece of code:
>     >     >
>     >     > tx_out.getScriptPubKey().getToAddress(MainNetParams.get());   
>     >      //tx_out
>     >     > is one of the outputs of the transaction
>     >     >
>     >     > El lunes, 11 de marzo de 2019, 2:27:45 (UTC+1), Andreas
>     Schildbach
>     >     escribió:
>     >     >
>     >     >     Can you post the exception and the piece of code you're
>     using?
>     >     Also,
>     >     >     what version of bitcoinj are you using?
>     >     >
>     >     >
>     >     >     On 10/03/2019 20.04, J wrote:
>     >     >     > When trying to get the address of an output, if I call
>     the
>     >     method
>     >     >     > getScriptPubKey() I always get a null pointer exception. 
>     >     >     > I checked this
>     >     >     >
>     >     >    
>     >    
>     <https://groups.google.com/forum/#!msg/bitcoinj/27k8xsf29Dw/WRA6csmm-vEJ
>     <https://groups.google.com/forum/#!msg/bitcoinj/27k8xsf29Dw/WRA6csmm-vEJ>
> 
>     >    
>     <https://groups.google.com/forum/#!msg/bitcoinj/27k8xsf29Dw/WRA6csmm-vEJ
>     <https://groups.google.com/forum/#!msg/bitcoinj/27k8xsf29Dw/WRA6csmm-vEJ>>
> 
>     >
>     >     >    
>     >    
>     <https://groups.google.com/forum/#!msg/bitcoinj/27k8xsf29Dw/WRA6csmm-vEJ
>     <https://groups.google.com/forum/#!msg/bitcoinj/27k8xsf29Dw/WRA6csmm-vEJ>
> 
>     >    
>     <https://groups.google.com/forum/#!msg/bitcoinj/27k8xsf29Dw/WRA6csmm-vEJ
>     
> <https://groups.google.com/forum/#!msg/bitcoinj/27k8xsf29Dw/WRA6csmm-vEJ>>>> 
> and
> 
>     >
>     >     >
>     >     >     > this
>     >     >     >
>     >     >    
>     >    
>     
> <https://bitcoin.stackexchange.com/questions/2370/how-to-get-destination-address-from-bitcoinj-transactionoutput
>     
> <https://bitcoin.stackexchange.com/questions/2370/how-to-get-destination-address-from-bitcoinj-transactionoutput>
> 
>     >    
>     
> <https://bitcoin.stackexchange.com/questions/2370/how-to-get-destination-address-from-bitcoinj-transactionoutput
>     
> <https://bitcoin.stackexchange.com/questions/2370/how-to-get-destination-address-from-bitcoinj-transactionoutput>>
> 
>     >
>     >     >    
>     >    
>     
> <https://bitcoin.stackexchange.com/questions/2370/how-to-get-destination-address-from-bitcoinj-transactionoutput
>     
> <https://bitcoin.stackexchange.com/questions/2370/how-to-get-destination-address-from-bitcoinj-transactionoutput>
> 
>     >    
>     
> <https://bitcoin.stackexchange.com/questions/2370/how-to-get-destination-address-from-bitcoinj-transactionoutput
>     
> <https://bitcoin.stackexchange.com/questions/2370/how-to-get-destination-address-from-bitcoinj-transactionoutput>>>>,
> 
>     >
>     >     >
>     >     >     > but seems unsolved and the link to the github
>     repository on
>     >     >     > StackExchange is not working.
>     >     >     > I tried checking if the transaction is coinbase first,
>     but
>     >     still the
>     >     >     > same error.
>     >     >     >
>     >     >     > Any ideas on how to solve this? 
>     >     >     >
>     >     >     > --
>     >     >     > You received this message because you are subscribed
>     to the
>     >     Google
>     >     >     > Groups "bitcoinj" group.
>     >     >     > To unsubscribe from this group and stop receiving emails
>     >     from it,
>     >     >     send
>     >     >     > an email to bitcoinj+u...@googlegroups.com
>     >     >     > <mailto:bitcoinj+u...@googlegroups.com>.
>     >     >     > For more options, visit
>     https://groups.google.com/d/optout <https://groups.google.com/d/optout>
>     >     <https://groups.google.com/d/optout
>     <https://groups.google.com/d/optout>>
>     >     >     <https://groups.google.com/d/optout
>     <https://groups.google.com/d/optout>
>     >     <https://groups.google.com/d/optout
>     <https://groups.google.com/d/optout>>>.
>     >     >
>     >     >
>     >     > --
>     >     > You received this message because you are subscribed to the
>     Google
>     >     > Groups "bitcoinj" group.
>     >     > To unsubscribe from this group and stop receiving emails
>     from it,
>     >     send
>     >     > an email to bitcoinj+u...@googlegroups.com
>     >     > <mailto:bitcoinj+u...@googlegroups.com>.
>     >     > For more options, visit https://groups.google.com/d/optout
>     <https://groups.google.com/d/optout>
>     >     <https://groups.google.com/d/optout
>     <https://groups.google.com/d/optout>>.
>     >
>     >
>     > --
>     > You received this message because you are subscribed to the Google
>     > Groups "bitcoinj" group.
>     > To unsubscribe from this group and stop receiving emails from it,
>     send
>     > an email to bitcoinj+u...@googlegroups.com
>     > <mailto:bitcoinj+u...@googlegroups.com>.
>     > For more options, visit https://groups.google.com/d/optout
>     <https://groups.google.com/d/optout>.
> 
> 
> -- 
> You received this message because you are subscribed to the Google
> Groups "bitcoinj" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to bitcoinj+unsubscr...@googlegroups.com
> <mailto:bitcoinj+unsubscr...@googlegroups.com>.
> For more options, visit https://groups.google.com/d/optout.


-- 
You received this message because you are subscribed to the Google Groups 
"bitcoinj" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to bitcoinj+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to