2014-02-26 24 views
3

我試圖運行可在這裏http://restlet.org/learn/guide/2.2/introduction/first-steps/first-applicationJava序列問題,上述2.1-M4

我試圖在Android設備上運行的客戶端非常簡單的Restlet示例應用程序,但我得到以下錯誤:

Unable to convert a [application/json,UTF-8] representation into an object of class org.restlet.example.common.Contact 
java.io.IOException: Unable to create the Object representation 
org.restlet.engine.converter.DefaultConverter.toObject(DefaultConverter.java:291) 
org.restlet.service.ConverterService.toObject(ConverterService.java:170) 
org.restlet.resource.Resource.toObject(Resource.java:828) 
org.restlet.engine.resource.ClientInvocationHandler.invoke(ClientInvocationHandler.java:240) 
$Proxy7.retrieve(Native Method) 
org.restlet.example.serialisation.android.activity.ContactActivity$2.run(ContactActivity.java:142) 
java.lang.Thread.run(Thread.java:1096) 
java.lang.IllegalArgumentException: The serialized representation must have this media type: application/x-java-serialized-object or this one: application/x-java-serialized-object+xml 
org.restlet.representation.ObjectRepresentation.<init>(ObjectRepresentation.java:204) 
org.restlet.representation.ObjectRepresentation.<init>(ObjectRepresentation.java:133) 
org.restlet.representation.ObjectRepresentation.<init>(ObjectRepresentation.java:114) 
org.restlet.engine.converter.DefaultConverter.toObject(DefaultConverter.java:288) 

使這個應用程序工作的唯一方法是使用Restlet 2.1-M4版本。我嘗試了2.2-RC2,甚至使用「穩定的」2.1.7 Restlet版本。

我知道這個應用程序已經過「Restlet Framework 2.1 Milestone 4」的測試,但對我來說聽起來太奇怪了,以至於後來的穩定版本2.1.7在像這樣一個簡單的例子上瘋狂!

該應用程序本身非常簡單,我不能看到問題可能依賴的地方,除了restlet庫自身的「bug」之外。 我可以想象的唯一其他選擇是,在restlet 2.1-m4之後,爲了讓java序列化工作正常,必須在客戶端和/或服務器中添加一些額外的代碼段,這對於2.1- M4。

任何意見或建議將不勝感激。

最佳,

拉斐爾格拉維納

回答

-1

由於潛在的安全問題,我們必須禁用默認轉換器,因爲這裏說明: https://github.com/restlet/restlet-framework-java/wiki/XEE-security-enhancements

你應該傑克遜擴展添加到您的類路徑(組織。 restlet.ext.jackson.jar和依賴關係)。希望這可以幫助。

+0

非常感謝Jerome,所以我需要做的就是在我的classpath中添加org.restlet.ext.jackson.jar?我是否也必須在java源代碼中明確設置Jackson轉換器? 此外,雲,你更精確:org.restlet.ext.jackson.jar需要哪些庫已知? 感謝您的支持! – user3356932

+0

Jerome Louvel,請你詳細說明你的答案。我也面臨這個問題。通過添加傑克遜罐子沒有任何幫助。我應該修改java代碼以強制使用jackson嗎? – vogash

+0

如果通過Maven配置Jackson擴展,則所有依賴關係都會自動生成。如果您使用Zip分配,則會有一個/lib/readme.txt文件列出所有依賴關係。 –