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.