1. 程式人生 > >關於java開發jre選擇的忠告

關於java開發jre選擇的忠告

首先分享的是一句話:安裝jdk時一般會單獨分離出一個jre資料夾,選擇jre時最好選擇jdk檔案下的那的jre不要選擇單獨的那個(龍哥語)

我們可以看見兩個是jre的大小是不一樣的,jdk中的jre大一些,裡面的jar包多些。外面的那個jre小些,一般集成了大多數需要用到的jar包,但是不是最全的,當遇到需要用到的jar包而外面的jre裡又沒有的時候,就會出現一些莫名其妙的問題,讓人很頭疼,所以為了安全起見最好是選擇jdk資料夾中那個大一點的。

下面我就來還原我遇到的問題:

Exception in thread "main" java.lang.IllegalStateException: Unable to create JAXBContext for generated packages: Provider com.sun.xml.bind.v2.ContextFactory could not be instantiated: javax.xml.bind.JAXBException: "com.yinhai.common.webservice" 不包含 ObjectFactory.class 或 jaxb.index     at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:356)     at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:204)     at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:197)     at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:152)     at com.yinhai.common.webservice.HelloClient1.main(HelloClient1.java:24) Caused by: javax.xml.bind.JAXBException: Provider com.sun.xml.bind.v2.ContextFactory could not be instantiated: javax.xml.bind.JAXBException: "com.yinhai.common.webservice" 不包含 ObjectFactory.class 或 jaxb.index  - with linked exception: [javax.xml.bind.JAXBException: "com.yinhai.common.webservice" 不包含 ObjectFactory.class 或 jaxb.index]     at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:146)     at javax.xml.bind.ContextFinder.find(ContextFinder.java:334)     at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:431)     at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:353)     ... 4 more Caused by: javax.xml.bind.JAXBException: "com.yinhai.common.webservice" 不包含 ObjectFactory.class 或 jaxb.index     at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:275)     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     at java.lang.reflect.Method.invoke(Method.java:601)     at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:172)     at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:132)     ... 7 more

這是呼叫webservice服務端的時候報出的bug,我是直接看不出來的,那麼常規操作,找度娘。百度一下,從各種各樣的資訊中篩選出一條有用的資訊那就是和jar包有關。

首先分析以前還可以正常呼叫,webservice的jar包應該是沒問題的,然後就想到是可能和jre的版本有關係,結果安裝的jdk1.7和jdk1.8切換來還是沒有解決問題。不放棄,繼續百度篩選有用的資訊,結果功夫不負有心人有看到一條有用的資訊,提示上面呼叫webservice時要注意環境變數的配置。突然就像到經理(上面的龍哥)跟我說過的那句話,於是重新配置jre,測試成功!!!

終結:敲程式碼這行經驗很重要!!!不過我們在不斷總結經驗的同時也要不斷學習,經驗+知識量我們才能向更高的層次邁進...