ExceptionInInitializerError
阿新 • • 發佈:2019-01-03
Process: com.jh.fastec.example, PID: 3511 java.lang.ExceptionInInitializerError at com.jh.latte.net.RestCreator$RetrofitHolder.access$100(RestCreator.java) at com.jh.latte.net.RestCreator$RestServiceHolder.<clinit>(RestCreator.java:50) at com.jh.latte.net.RestCreator$RestServiceHolder.access$200(RestCreator.java) at com.jh.latte.net.RestCreator.getRestService(RestCreator.java:59) at com.jh.latte.net.RestClient.request(RestClient.java:48) at com.jh.latte.net.RestClient.get(RestClient.java:88) at com.jh.fastec.example.ExampleDelegate.testMethod(ExampleDelegate.java:53) at com.jh.fastec.example.ExampleDelegate.onBindView(ExampleDelegate.java:27) at com.jh.latte.delegates.BaseDelegate.onCreateView(BaseDelegate.java:40) at android.support.v4.app.Fragment.performCreateView(Fragment.java:2354) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1419) at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1740) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1809) at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:799) at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2580) at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2367) at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2322) at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2229) at android.support.v4.app.FragmentManagerImpl.dispatchStateChange(FragmentManager.java:3221) at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:3171) at android.support.v4.app.FragmentController.dispatchActivityCreated(FragmentController.java:192) at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:560) at android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:177) at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1248) at android.app.Activity.performStart(Activity.java:6696) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2628) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6119) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) Caused by: java.lang.IllegalArgumentException: Illegal URL: www.baidu.com at retrofit2.Retrofit$Builder.baseUrl(Retrofit.java:456) at com.jh.latte.net.RestCreator$RetrofitHolder.<clinit>(RestCreator.java:40) at com.jh.latte.net.RestCreator$RetrofitHolder.access$100(RestCreator.java) at com.jh.latte.net.RestCreator$RestServiceHolder.<clinit>(RestCreator.java:50) at com.jh.latte.net.RestCreator$RestServiceHolder.access$200(RestCreator.java) at com.jh.latte.net.RestCreator.getRestService(RestCreator.java:59) at com.jh.latte.net.RestClient.request(RestClient.java:48) at com.jh.latte.net.RestClient.get(RestClient.java:88) at com.jh.fastec.example.ExampleDelegate.testMethod(ExampleDelegate.java:53) at com.jh.fastec.example.ExampleDelegate.onBindView(ExampleDelegate.java:27) at com.jh.latte.delegates.BaseDelegate.onCreateView(BaseDelegate.java:40) at android.support.v4.app.Fragment.performCreateView(Fragment.java:2354) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1419) at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1740) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1809) at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:799) at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2580) at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2367) at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2322) at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2229) at android.support.v4.app.FragmentManagerImpl.dispatchStateChange(FragmentManager.java:3221) at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:3171) at android.support.v4.app.FragmentController.dispatchActivityCreated(FragmentController.java:192) at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:560) at android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:177) at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1248) at android.app.Activity.performStart(Activity.java:6696) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2628) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6119) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
封裝retrofit網路工具類時,baseUrl(HttpUrl baseUrl) 方法傳入了“www.baidu.com”導致的;通過看到的錯誤日誌中的
Caused by: java.lang.IllegalArgumentException: Illegal URL: www.baidu.com
解決辦法:
傳入“http://www.baidu.com”就可以了
具體原因看retrofit的HttpUrl原始碼中的註釋,如果是http或https格式的就返回一個新的httpurl,否則返回null
/** * Returns a new {@code HttpUrl} representing {@code url} if it is a well-formed HTTP or HTTPS * URL, or null if it isn't. */ public static @Nullable HttpUrl parse(String url) { Builder builder = new Builder(); Builder.ParseResult result = builder.parse(null, url); return result == Builder.ParseResult.SUCCESS ? builder.build() : null; }
在此記錄,希望對你有幫助