[
https://issues.apache.org/jira/browse/DAFFODIL-2915?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Steve Lawrence reassigned DAFFODIL-2915:
----------------------------------------
Assignee: Steve Lawrence
> Need better error message when missing plugin
> ---------------------------------------------
>
> Key: DAFFODIL-2915
> URL: https://issues.apache.org/jira/browse/DAFFODIL-2915
> Project: Daffodil
> Issue Type: Bug
> Components: Diagnostics
> Affects Versions: 3.8.0
> Reporter: Josh Adams
> Assignee: Steve Lawrence
> Priority: Minor
>
> Ran into an issue where a saved parser was relying on a plugin for Daffodil.
> Note that this plugin needs to be present when both compiling and running the
> schema.
> When attempting to run the saved parser without the plugin being present on
> the classpath, I would get the following stack trace:
> java.lang.ClassCastException: cannot assign instance of
> scala.collection.immutable.List$SerializationProxy to field
> org.apache.daffodil.runtime1.processors.ModelGroupRuntimeData.groupMembers of
> type scala.collection.Seq in instance of
> org.apache.daffodil.runtime1.processors.SequenceRuntimeData
> at
> java.base/java.io.ObjectStreamClass$FieldReflector.setObjFieldValues(ObjectStreamClass.java:2096)
> at
> java.base/java.io.ObjectStreamClass$FieldReflector.checkObjectFieldValueTypes(ObjectStreamClass.java:2060)
> at
> java.base/java.io.ObjectStreamClass.checkObjFieldValueTypes(ObjectStreamClass.java:1349)
> at
> java.base/java.io.ObjectInputStream$FieldValues.defaultCheckFieldValues(ObjectInputStream.java:2697)
> at
> java.base/java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2498)
> at
> java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2284)
> at
> java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1762)
> at
> java.base/java.io.ObjectInputStream$FieldValues.<init>(ObjectInputStream.java:2618)
> at
> java.base/java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2469)
> at
> java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2284)
> at
> java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1762)
> at
> java.base/java.io.ObjectInputStream$FieldValues.<init>(ObjectInputStream.java:2618)
> at
> java.base/java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2469)
> at
> java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2284)
> at
> java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1762)
> at
> java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:540)
> at
> java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:498)
> at
> scala.collection.immutable.List$SerializationProxy.readObject(List.scala:527)
> at
> java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
> at java.base/java.lang.reflect.Method.invoke(Method.java:580)
> at
> java.base/java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1102)
> at
> java.base/java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2444)
> at
> java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2284)
> at
> java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1762)
> at
> java.base/java.io.ObjectInputStream$FieldValues.<init>(ObjectInputStream.java:2618)
> at
> java.base/java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2469)
> at
> java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2284)
> at
> java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1762)
> at
> java.base/java.io.ObjectInputStream$FieldValues.<init>(ObjectInputStream.java:2618)
> at
> java.base/java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:678)
> at
> org.apache.daffodil.runtime1.processors.SchemaSetRuntimeData.readObject(SchemaSetRuntimeData.scala:51)
> at
> java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
> at java.base/java.lang.reflect.Method.invoke(Method.java:580)
> at
> java.base/java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1102)
> at
> java.base/java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2444)
> at
> java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2284)
> at
> java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1762)
> at
> java.base/java.io.ObjectInputStream$FieldValues.<init>(ObjectInputStream.java:2618)
> at
> java.base/java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2469)
> at
> java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2284)
> at
> java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1762)
> at
> java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:540)
> at
> java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:498)
> at
> org.apache.daffodil.core.compiler.Compiler.reload(Compiler.scala:273)
> at
> org.apache.daffodil.core.compiler.Compiler.reload(Compiler.scala:218)
> at
> org.apache.daffodil.cli.Main.$anonfun$createProcessorFromParser$1(Main.scala:990)
> at org.apache.daffodil.lib.util.Timer$.getTimeResult(Timer.scala:78)
> at org.apache.daffodil.lib.util.Timer$.getResult(Timer.scala:37)
> at
> org.apache.daffodil.cli.Main.createProcessorFromParser(Main.scala:990)
> at org.apache.daffodil.cli.Main.runIgnoreExceptions(Main.scala:1146)
> at org.apache.daffodil.cli.Main.run(Main.scala:1950)
> at org.apache.daffodil.cli.Main$.main(Main.scala:875)
> at org.apache.daffodil.cli.Main.main(Main.scala)
> It took quite a while to figure out what the problem was. Don't know if it
> would be possible or reasonable, but it would be nice if any dependencies
> like this could be baked into the saved parser flie.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)