【发布时间】:2023-02-04 01:06:01
【问题描述】:
当我尝试使用 XStream 1.4.9 序列化一个非法参数异常类型变量,有一个java.lang.UnsupportedOperationException。
下面是堆栈跟踪信息。 我不知道这意味着什么。来自网上的信息有限。
java.lang.UnsupportedOperationException: Not supported. Pass in the cause using the constructors instead.
at com.oracle.truffle.api.exception.AbstractTruffleException.initCause(AbstractTruffleException.java:413)
at com.thoughtworks.xstream.converters.extended.ThrowableConverter.marshal(ThrowableConverter.java:56)
at com.thoughtworks.xstream.core.AbstractReferenceMarshaller.convert(AbstractReferenceMarshaller.java:68)
try {
final ScriptEngine scriptEngine = new ScriptEngineManager()
.getEngineByName("JavaScript");
Objects.toString(scriptEngine.eval("X"), null);
} catch (Exception e) {
XStream xstream = new XStream();
System.err.println(xstream.toXML(e));
}
这是我看到的最小示例。 我意识到每当我使用js脚本引擎依赖项,XStream 无法序列化它,在删除这种依赖项时,一切正常
【问题讨论】:
-
查看 ThrowableConverter 和 AbstractTruffleException 的来源
-
发出的消息听起来更像是您试图反序列化
IllegalArgumentException- 即从某种外部形式创建 Java 对象...