2017-09-27 151 views
0

我想在我的應用程序中使用Algolia進行地理搜索。致命異常:main java.lang.ExceptionInInitializerError引起:java.lang.NoClassDefFoundError:org.slf4j.LoggerFactory

當我將示例項目(icebnb)文件複製到我的項目。

我已經通過堆棧溢出助手清除了即時搜索模塊中的一些錯誤。

當我打開活動(運行時)時,會引發錯誤。

我正面臨着這個錯誤,並且忍受了很長時間。請幫幫我。

09-27 14:44:57.244 29793-29793/com.google.tho.saw E/AndroidRuntime: FATAL EXCEPTION: main java.lang.ExceptionInInitializerError 
    at com.jayway.jsonpath.internal.ParseContextImpl.parse(ParseContextImpl.java:38) 
    at com.jayway.jsonpath.JsonPath.read(JsonPath.java:502) 
    at com.algolia.instantsearch.utils.JSONUtils.getObjectFromJSONPath(JSONUtils.java:40) 
    at com.algolia.instantsearch.utils.JSONUtils.getStringFromJSONPath(JSONUtils.java:22) 
    at com.algolia.instantsearch.ui.views.Hits$HitsAdapter.onBindViewHolder(Hits.java:458) 
    at com.algolia.instantsearch.ui.views.Hits$HitsAdapter.onBindViewHolder(Hits.java:398) 
    at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:6356) 
    at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:6389) 
    at android.support.v7.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:5335) 
    at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5598) 
    at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5440) 
    at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5436) 
    at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2224) 
    at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1551) 
    at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1511) 
    at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:595) 
    at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3583) 
    at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3312) 
    at android.support.v7.widget.RecyclerView.consumePendingUpdateOperations(RecyclerView.java:1618) 
    at android.support.v7.widget.RecyclerView$ViewFlinger.run(RecyclerView.java:4702) 
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:791) 
    at android.view.Choreographer.doCallbacks(Choreographer.java:591) 
    at android.view.Choreographer.doFrame(Choreographer.java:560) 
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:777) 
    at android.os.Handler.handleCallback(Handler.java:725) 
    at android.os.Handler.dispatchMessage(Handler.java:92) 
    at android.os.Looper.loop(Looper.java:176) 
    at android.app.ActivityThread.main(ActivityThread.java:5317) 
    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:1102) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869) 
    at dalvik.system.NativeStart.main(Native Method) 

Caused by: java.lang.NoClassDefFoundError: org.slf4j.LoggerFactory 

    at com.jayway.jsonpath.internal.JsonContext.<clinit>(JsonContext.java:41) 
    at com.jayway.jsonpath.internal.ParseContextImpl.parse(ParseContextImpl.java:38)  
    at com.jayway.jsonpath.JsonPath.read(JsonPath.java:502)  
    at com.algolia.instantsearch.utils.JSONUtils.getObjectFromJSONPath(JSONUtils.java:40)  
    at com.algolia.instantsearch.utils.JSONUtils.getStringFromJSONPath(JSONUtils.java:22)  
    at com.algolia.instantsearch.ui.views.Hits$HitsAdapter.onBindViewHolder(Hits.java:458)  
    at com.algolia.instantsearch.ui.views.Hits$HitsAdapter.onBindViewHolder(Hits.java:398)  
    at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:6356)  
    at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:6389)  
    at android.support.v7.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:5335)  
    at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5598)  
    at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5440)  
    at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5436)  
    at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2224)  
    at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1551)  
    at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1511)  
    at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:595)  
    at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3583)  
    at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3312)  
    at android.support.v7.widget.RecyclerView.consumePendingUpdateOperations(RecyclerView.java:1618)  
    at android.support.v7.widget.RecyclerView$ViewFlinger.run(RecyclerView.java:4702)  
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:791)  
    at android.view.Choreographer.doCallbacks(Choreographer.java:591)  
    at android.view.Choreographer.doFrame(Choreographer.java:560)  
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:777)  
    at android.os.Handler.handleCallback(Handler.java:725)  
    at android.os.Handler.dispatchMessage(Handler.java:92)  
    at android.os.Looper.loop(Looper.java:176)  
    at android.app.ActivityThread.main(ActivityThread.java:5317)  
    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:1102)  
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)  
    at dalvik.system.NativeStart.main(Native Method)  

回答

0

你缺少庫org.slf4j.LoggerFactory類。

嘗試添加以下內容取決於您的app/build.gradle文件。

compile 'org.slf4j:slf4j-api:1.7.24' 
compile 'org.slf4j:slf4j-simple:1.7.24' 

OR

您也可以下載slf4j jar文件,然後包括在app /的build.gradle爲:

compile files('libs/slf4j.jar'); //You can change jar name here 
+0

添加庫後,我同步並清理和生成項目也。 然後也提高相同的錯誤。 我注意到一行 09-27 15:55:01.422 32151-32151/com.google.tho.saw E/dalvikvm:無法找到類'android.os.UserManager',從方法jc.a引用 –

+0

主要在4行顯示藍色鏈接。 1.at com.algolia.instantsearch.utils.JSONUtils.getObjectFromJSONPath(JSONUtils.java:40) 2.at com.algolia.instantsearch.utils.JSONUtils.getStringFromJSONPath(JSONUtils.java:22) –

+0

3.玉米.algolia.instantsearch.ui.views.Hits $ HitsAdapter.onBindViewHolder(Hits.java:458) 4. at com.algolia.instantsearch.ui.views.Hits $ HitsAdapter.onBindViewHolder(Hits。java:398) –

1

什麼InstantSearch的Android/IceBNB的版本您使用的?

  • 運行current version of IceBNB按預期工作,我可以重現你的情況的唯一方法是通過手動InstantSearch刪除 SLF4J:

    compile ("com.algolia:instantsearch-android:$VERSION_INSTANTSEARCH") { 
        exclude group: "org.slf4j" 
    } 
    

這會觸發你報道的那種java.lang.NoClassDefFoundError: org.slf4j.LoggerFactory 。但除非你手動刪除SLF4J,否則你不需要任何東西來讓示例應用程序工作。

  • 只有在您首先刪除SLF4J時,接受的答案的建議纔有意義。

你能分享一個觸發錯誤的設置嗎?

相關問題