【问题标题】:UnsupportedOperationException was thrown when serializing a Throwable variable using XStream使用 XStream 序列化 Throwable 变量时抛出 UnsupportedOperationException
【发布时间】: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 对象...

标签: java xstream


【解决方案1】:

我认为这是由于 Graalvm 实现了“javax.script.ScriptEngine”类,它没有像 jdk 实现的那样实现。 删除 Graalvm 依赖项,一切正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-26
    • 2014-10-25
    • 1970-01-01
    • 2022-01-22
    • 2014-01-30
    • 1970-01-01
    • 2017-08-18
    • 2011-11-05
    相关资源
    最近更新 更多