java - NPE when reading from directory Resource Stream -


i trying list of resource files in resource directory jar file , hitting strange behavior. jar loaded using urlclassloader loading 4 different .jar files.

i doing following :

    // read list of files resources/devices folder     inputstream = resourceclass.getclassloader().getresourceasstream("mypackage/resources/devices");      inputstreamreader isreader = new inputstreamreader(is);     bufferedreader reader = new bufferedreader(isreader);     string str;      try {         str = reader.readline();      ... 

when run application in ide .jar containing resource works 100% expected , list of files folder in .jar file. when change (break) path "is" null (in app of course check these) , returns safely.

when run loading application or command line readline throws npe.

i cannot explain because in debugger can see "is" not null (resource found) , "isreader" , "reader" looking fine, seems opening stream fine.

when code working can see bytes in stream in debugger, when npe's can see blanks in stream. looking @ permissions seems fine, , besides should not return "is" if privilege issue.

so going on here? how figure out going on causing npe?

edit: here full stack trace of npe.

java.lang.nullpointerexception @ java.io.filterinputstream.read(filterinputstream.java:133) @ sun.nio.cs.streamdecoder.readbytes(streamdecoder.java:283) @ sun.nio.cs.streamdecoder.implread(streamdecoder.java:325) @ sun.nio.cs.streamdecoder.read(streamdecoder.java:177) @ java.io.inputstreamreader.read(inputstreamreader.java:184) @ java.io.bufferedreader.fill(bufferedreader.java:154) @ java.io.bufferedreader.readline(bufferedreader.java:317) @ java.io.bufferedreader.readline(bufferedreader.java:382) @ com.microchip.mcc.mcu8.mcu8peripherallibrary.getdevicenamelist(mcu8peripherallibrary.java:47) @ com.microchip.mcc.mcu8.mcu8peripherallibrary.getdevices(mcu8peripherallibrary.java:27) @ com.microchip.mcc.core.service.basedeviceservice.getdevices(basedeviceservice.java:29) @ com.microchip.mcc.standalone.standaloneviewer.populatedevices(standaloneviewer.java:192) @ com.microchip.mcc.standalone.standaloneviewer.initialize(standaloneviewer.java:73) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:57) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) @ java.lang.reflect.method.invoke(method.java:606) @ sun.reflect.misc.trampoline.invoke(methodutil.java:75) @ sun.reflect.generatedmethodaccessor1.invoke(unknown source) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) @ java.lang.reflect.method.invoke(method.java:606) @ sun.reflect.misc.methodutil.invoke(methodutil.java:279) @ javafx.fxml.fxmlloader.load(fxmlloader.java:2223) @ javafx.fxml.fxmlloader.load(fxmlloader.java:2069) @ javafx.fxml.fxmlloader.load(fxmlloader.java:2830) @ javafx.fxml.fxmlloader.load(fxmlloader.java:2809) @ javafx.fxml.fxmlloader.load(fxmlloader.java:2795) @ javafx.fxml.fxmlloader.load(fxmlloader.java:2782) @ javafx.fxml.fxmlloader.load(fxmlloader.java:2771) @ com.microchip.mcc.standalone.standalone.start(standalone.java:32) @ com.sun.javafx.application.launcherimpl$5.run(launcherimpl.java:319) @ com.sun.javafx.application.platformimpl$5.run(platformimpl.java:219) @ com.sun.javafx.application.platformimpl$4$1.run(platformimpl.java:182) @ com.sun.javafx.application.platformimpl$4$1.run(platformimpl.java:179) @ java.security.accesscontroller.doprivileged(native method) @ com.sun.javafx.application.platformimpl$4.run(platformimpl.java:179) @ com.sun.glass.ui.invokelaterdispatcher$future.run(invokelaterdispatcher.java:76) 


Comments