1. 程式人生 > >ExceptionInInitializerError

ExceptionInInitializerError

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;
  }

在此記錄,希望對你有幫助