2016-09-05 5 views
0

Gluon Mobile JavafX 프로젝트가 있습니다.리소스를 읽으려고 할 때 NullPointerException이 발생했습니다.

내 apk에서 리소스를 읽으려고하고 있으며 Android에서만 오류가 발생합니다. ....

I/figuradorGeneralService(11481): ConfiguradorGeneralService:leerConfiguracion: BEGIN ... 
E/figuradorGeneralService(11481): null 
E/figuradorGeneralService(11481): java.lang.NullPointerException 
E/figuradorGeneralService(11481):  at com.registrodevisitas.services.ConfiguradorGeneralService.leerConfiguracion(ConfiguradorGeneralService.java:50) 
E/figuradorGeneralService(11481):  at com.registrodevisitas.services.ConfiguradorGeneralService.<init>(ConfiguradorGeneralService.java:34) 
E/figuradorGeneralService(11481):  at java.lang.Class.newInstanceImpl(Native Method) 
E/figuradorGeneralService(11481):  at java.lang.Class.newInstance(Class.java:1208) 
E/figuradorGeneralService(11481):  at com.airhacks.afterburner.injection.Injector.lambda$getDefaultInstanceSupplier$8(Injector.java:233) 
E/figuradorGeneralService(11481):  at com.airhacks.afterburner.injection.Injector.access$lambda$3(Injector.java) 
E/figuradorGeneralService(11481):  at com.airhacks.afterburner.injection.Injector$$Lambda$4.apply(Unknown Source) 
E/figuradorGeneralService(11481):  at com.airhacks.afterburner.injection.Injector.instantiateModelOrService(Injector.java:116) 
E/figuradorGeneralService(11481):  at com.airhacks.afterburner.injection.Injector.injectMembers(Injector.java:151) 
E/figuradorGeneralService(11481):  at com.airhacks.afterburner.injection.Injector.injectMembers(Injector.java:136) 
E/figuradorGeneralService(11481):  at com.airhacks.afterburner.injection.Injector.injectAndInitialize(Injector.java:129) 
E/figuradorGeneralService(11481):  at com.airhacks.afterburner.injection.Injector.registerExistingAndInject(Injector.java:107) 
E/figuradorGeneralService(11481):  at com.airhacks.afterburner.injection.Injector.instantiatePresenter(Injector.java:60) 
E/figuradorGeneralService(11481):  at com.airhacks.afterburner.views.FXMLView.lambda$loadSynchronously$2(FXMLView.java:89) 
E/figuradorGeneralService(11481):  at com.airhacks.afterburner.views.FXMLView.access$lambda$1(FXMLView.java) 
E/figuradorGeneralService(11481):  at com.airhacks.afterburner.views.FXMLView$$Lambda$2.call(Unknown Source) 
E/figuradorGeneralService(11481):  at javafx.fxml.FXMLLoader$ValueElement.processAttribute(FXMLLoader.java:929) 
E/figuradorGeneralService(11481):  at javafx.fxml.FXMLLoader$InstanceDeclarationElement.processAttribute(FXMLLoader.java:971) 
E/figuradorGeneralService(11481):  at javafx.fxml.FXMLLoader$Element.processStartElement(FXMLLoader.java:220) 
E/figuradorGeneralService(11481):  at javafx.fxml.FXMLLoader$ValueElement.processStartElement(FXMLLoader.java:744) 
E/figuradorGeneralService(11481):  at javafx.fxml.FXMLLoader.processStartElement(FXMLLoader.java:2707) 
E/figuradorGeneralService(11481):  at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2527) 
E/figuradorGeneralService(11481):  at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2441) 
E/figuradorGeneralService(11481):  at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2409) 
E/figuradorGeneralService(11481):  at com.airhacks.afterburner.views.FXMLView.loadSynchronously(FXMLView.java:91) 
E/figuradorGeneralService(11481):  at com.airhacks.afterburner.views.FXMLView.initializeFXMLLoader(FXMLView.java:100) 
E/figuradorGeneralService(11481):  at com.airhacks.afterburner.views.FXMLView.getView(FXMLView.java:112) 
E/figuradorGeneralService(11481):  at com.registrodevisitas.RegistroDeVisitas.lambda$init$0(RegistroDeVisitas.java:55) 
E/figuradorGeneralService(11481):  at com.registrodevisitas.RegistroDeVisitas.access$lambda$0(RegistroDeVisitas.java) 
E/figuradorGeneralService(11481):  at com.registrodevisitas.RegistroDeVisitas$$Lambda$1.get(Unknown Source) 
E/figuradorGeneralService(11481):  at com.gluonhq.impl.charm.a.d.a.a(SourceFile:32) 
E/figuradorGeneralService(11481):  at com.gluonhq.charm.glisten.application.MobileApplication.a(SourceFile:620) 
E/figuradorGeneralService(11481):  at com.gluonhq.charm.glisten.application.MobileApplication.switchView(SourceFile:391) 
E/figuradorGeneralService(11481):  at com.gluonhq.charm.glisten.application.MobileApplication.switchView(SourceFile:368) 
E/figuradorGeneralService(11481):  at com.gluonhq.charm.glisten.application.MobileApplication.start(SourceFile:218) 
E/figuradorGeneralService(11481):  at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$144(LauncherImpl.java:863) 
E/figuradorGeneralService(11481):  at com.sun.javafx.application.LauncherImpl.access$lambda$8(LauncherImpl.java) 
E/figuradorGeneralService(11481):  at com.sun.javafx.application.LauncherImpl$$Lambda$9.run(Unknown Source) 
E/figuradorGeneralService(11481):  at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$157(PlatformImpl.java:326) 
E/figuradorGeneralService(11481):  at com.sun.javafx.application.PlatformImpl.access$lambda$6(PlatformImpl.java) 
E/figuradorGeneralService(11481):  at com.sun.javafx.application.PlatformImpl$$Lambda$7.run(Unknown Source) 
E/figuradorGeneralService(11481):  at com.sun.javafx.application.PlatformImpl.lambda$null$155(PlatformImpl.java:295) 
E/figuradorGeneralService(11481):  at com.sun.javafx.application.PlatformImpl.access$lambda$18(PlatformImpl.java) 
E/figuradorGeneralService(11481):  at com.sun.javafx.application.PlatformImpl$$Lambda$19.run(Unknown Source) 
E/figuradorGeneralService(11481):  at java.security.AccessController.doPrivileged(AccessController.java:52) 
E/figuradorGeneralService(11481):  at com.sun.javafx.application.PlatformImpl.lambda$runLater$156(PlatformImpl.java:294) 
E/figuradorGeneralService(11481):  at com.sun.javafx.application.PlatformImpl.access$lambda$5(PlatformImpl.java) 
E/figuradorGeneralService(11481):  at com.sun.javafx.application.PlatformImpl$$Lambda$6.run(Unknown Source) 
E/figuradorGeneralService(11481):  at com.sun.glass.ui.monocle.RunnableProcessor.runLoop(RunnableProcessor.java:92) 
E/figuradorGeneralService(11481):  at com.sun.glass.ui.monocle.RunnableProcessor.run(RunnableProcessor.java:51) 
E/figuradorGeneralService(11481):  at java.lang.Thread.run(Thread.java:8 
I/figuradorGeneralService(11481): ConfiguradorGeneralService:leerConfiguracion: END 

이 파일은 자원/COM에

enter image description here

이 방법은 윈도우에서 완벽하게 작동된다

private void leerConfiguracion() { logger.log(Level.INFO, "ConfiguradorGeneralService:leerConfiguracion: BEGIN ... "); 

    try 
    { 

     File fileLugares = new File(ConfiguradorGeneralService.class.getResource("/com/registrodevisitas/json/configuracion.json").getFile()); 


     logger.log(Level.INFO, "ConfiguradorGeneralService:leerConfiguracion: Leyendo configuración: " + fileLugares.getAbsolutePath()); 

     // create a FileClient to the specified File 

     FileClient fileClient = FileClient.create(fileLugares); 

     // create a JSON converter that converts the nodes from a JSON array into language objects 

     InputStreamIterableInputConverter<ConfiguradorGeneral> converter = new JsonIterableInputConverter<>(ConfiguradorGeneral.class); 

     // retrieve a list from a ListDataReader created from the FileClient 

     configuracion = DataProvider.retrieveList(fileClient.createListDataReader(converter)); 


    } 
    catch(Exception e) 
    { 
     logger.log(Level.SEVERE, e.getMessage(), e); 
    } 

    logger.log(Level.INFO, "ConfiguradorGeneralService:leerConfiguracion: END "); 


} 

안드로이드에 오류가 있습니다.

도움이 될 것입니다. 고맙습니다.

답변

0

Android (및 iOS)에서는 바탕 화면 에서처럼 클래스 패스 리소스에 파일로 직접 액세스 할 수 없습니다. 대신 InputStream을 사용하여 리소스에 액세스해야합니다. 이 기능은 지원되는 모든 플랫폼 (Android, iOS 및 데스크톱)에서 작동합니다.

BasicInputDataSource source = new BasicInputDataSource(ConfiguradorGeneralService.class.getResourceAsStream("/com/registrodevisitas/json/configuracion.json")); 

InputStreamIterableInputConverter<ConfiguradorGeneral> converter = new JsonIterableInputConverter<>(ConfiguradorGeneral.class); 

configuracion = DataProvider.retrieveList(new InputStreamListDataReader<>(source, converter)); 
:

시도는 다음과 같은 코드를 사용하여 리소스에 액세스하기