2016-06-02 1 views
0

Android에서 사진을 선택하거나 찍을 때 RxImagePicker (github link)를 사용하려고합니다. 일부 장치에서는 정상적으로 작동하지만 Samsung DUOS (API 16)를 사용하면 문제가 발생합니다. 스택 추적 :RxImagePicker를 사용하는 java.lang.NoClassDefFoundError

FATAL EXCEPTION: main 
java.lang.NoClassDefFoundError: rx.subjects.PublishSubject 
at com.mlsdev.rximagepicker.RxImagePicker.requestImage(RxImagePicker.java:29) 
at br.com.deway.imeeting.PortalColaborador.Login.Guardiao.GuardiaoActivity.pickImageFromSource(GuardiaoActivity.java:340) 
at br.com.deway.imeeting.PortalColaborador.Login.Guardiao.GuardiaoActivity.access$200(GuardiaoActivity.java:80) 
at br.com.deway.imeeting.PortalColaborador.Login.Guardiao.GuardiaoActivity$4.onClick(GuardiaoActivity.java:320) 
at com.android.internal.app.AlertController$AlertParams$3.onItemClick(AlertController.java:934) 
at android.widget.AdapterView.performItemClick(AdapterView.java:301) 
at android.widget.AbsListView.performItemClick(AbsListView.java:1280) 
at android.widget.AbsListView$PerformClick.run(AbsListView.java:3071) 
at android.widget.AbsListView$1.run(AbsListView.java:3971) 
at android.os.Handler.handleCallback(Handler.java:615) 
at android.os.Handler.dispatchMessage(Handler.java:92) 
at android.os.Looper.loop(Looper.java:137) 
at android.app.ActivityThread.main(ActivityThread.java:4960) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:511) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805) 
at dalvik.system.NativeStart.main(Native Method) 

내 코드 :

RxImagePicker.with(this).requestImage(source) 
       .flatMap(uri -> RxImageConverters.uriToBitmap(getApplicationContext(), uri)) 
       .subscribe(result -> { 
        imageView.setImageBitmap(result); 
        ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
        result.compress(Bitmap.CompressFormat.JPEG, 100, bos); 
        byte[] bitmapData = bos.toByteArray(); 
        encodedPhoto = Base64.encodeToString(bitmapData, Base64.DEFAULT); 
       }, throwable -> { 
        showDialogWithoutFinish("Ocorreu um erro ao carregar a imagem, por favor tente novamente"); 
       }); 

답변

0

NoClassDefFound 오류가 거의 항상 당신이 클래스 경로에 jar 파일을 누락 의미한다. 이 기능은 일부 컴퓨터에서는 작동하지만 다른 컴퓨터에서는 작동하지 않는 것이 좋습니다. 두 가지 확실한 가능성을 생각해 볼 수 있습니다.

  1. 일부 장치에서만 액세스 할 수있는 코드입니다. 코드를 실행하기 전에 일부 속성을 확인하는 주변 조건문이있을 수 있습니다.
  2. 이것은 호환성 문제입니다. DUOS에서 작동하는 다른 버전의 jar 파일을 다운로드하거나 DUOS가 RXImagePicker를 지원하지 않아도됩니다. 후자의 경우,이 단계를 조건부로 만들고 DUOS와 호환되는 다른 드라이버를 사용해야 할 수도 있습니다.
+0

그러나 github에서 소스 코드를 다운로드하고 샘플 애플리케이션을 실행하면 DUOS에서 작동합니다. 모든 것을 시도했는데 코드가 샘플과 동일하지만 작동하지 않습니다 –

+0

라이브러리 폴더와 빌드 파일도 동일합니까? –

+0

예, 예외를 잡아서 다른 방법을 사용하고 있습니다. –

관련 문제