ArrayList を持つクラスの簡単な例を試しました。下記参照:
class EmployeeList {
List<String> departmentNames = new ArrayList<String>();
public EmployeeList(String dept1, String dept2) {
super();
departmentNames.add(dept1);
departmentNames.add(dept2);
}
public String toString()
{
return "EMPLOYEELIST DETAILS : " + departmentNames.toString();
}
}
今、タイプ EmployeeList のオブジェクトを JSON 文字列に変換してから、jettison を使用してオブジェクトに戻そうとしています。
EmployeeList employeeList1 = new EmployeeList("IT","FINANCE");
XStream xstreamWriteEmployeeList = new XStream(new JettisonMappedXmlDriver());
xstreamWriteEmployeeList.alias("employee", EmployeeList.class);
String jsonStringEmployeeList = xstreamWriteEmployeeList.toXML(employeeList1);
XStream xstreamReadEmployeeList = new XStream(new JettisonMappedXmlDriver());
xstreamReadEmployeeList.alias("employee", EmployeeList.class);
EmployeeList employeeList2 = (EmployeeList)xstreamReadEmployeeList.fromXML(jsonStringEmployeeList);
試してみたところ、ローカル システムでは動作していますが、アプリケーション サーバーにデプロイしようとすると、エラーが発生します。
java.lang.NoSuchMethodError: org.codehaus.jettison.AbstractXMLStreamWriter.getSerializedAsArrays()Ljava/util/ArrayList;
理由はありますか?ローカル システムとアプリケーション サーバーで同じ Java バージョンを使用しています。