Self Destruction Mode Activated - What is corrupting my file?
-

Something I have changed in Classification or ITO is corrupting my file. Maybe related to a Custom Property as the log says? But I don’t know how to track this down further without having to try out changing hundreds of ressources?
Anwendungs-Build-Nummer: 25.6.0.68 Das Modell wurde mit einem Build mit der Nummer gespeichert: 25.6.0.68 java.lang.NullPointerException at java.base/java.lang.Class.forName0(Native Method) at java.base/java.lang.Class.forName(Class.java:467) at com.solibri.saf.plugins.filteringplugin.properties.CustomPropertyReference.readObject(Unknown Source) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:569) at java.base/java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1100) at java.base/java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2423) at java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2257) at java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1733) at java.base/java.io.ObjectInputStream$FieldValues.<init>(ObjectInputStream.java:2606) at java.base/java.io.ObjectInputStream.readFields(ObjectInputStream.java:691) at com.solibri.saf.plugins.filteringplugin.ClassAndPropertyFilter.readObject(Unknown Source) at jdk.internal.reflect.GeneratedMethodAccessor79.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:569) at java.base/java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1100) at java.base/java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2423) at java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2257) at java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1733) at java.base/java.io.ObjectInputStream.readArray(ObjectInputStream.java:2157) at java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1721) at java.base/java.io.ObjectInputStream$FieldValues.<init>(ObjectInputStream.java:2606) at java.base/java.io.ObjectInputStream.readFields(ObjectInputStream.java:691) at java.base/java.util.Vector.readObject(Vector.java:1158) at java.base/jdk.internal.reflect.GeneratedMethodAccessor24.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:569) at java.base/java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1100) at java.base/java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2423) at java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2257) at java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1733) at java.base/java.io.ObjectInputStream$FieldValues.<init>(ObjectInputStream.java:2606) at java.base/java.io.ObjectInputStream.readFields(ObjectInputStream.java:691) at com.solibri.saf.plugins.classificationplugin.Classification.readObject(Unknown Source) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:569) at java.base/java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1100) at java.base/java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2423) at java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2257) at java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1733) at java.base/java.io.ObjectInputStream.readArray(ObjectInputStream.java:2157) at java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1721) at java.base/java.io.ObjectInputStream$FieldValues.<init>(ObjectInputStream.java:2606) at java.base/java.io.ObjectInputStream.readFields(ObjectInputStream.java:691) at java.base/java.util.Vector.readObject(Vector.java:1158) at java.base/jdk.internal.reflect.GeneratedMethodAccessor24.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:569) at java.base/java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1100) at java.base/java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2423) at java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2257) at java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1733) at java.base/java.io.ObjectInputStream$FieldValues.<init>(ObjectInputStream.java:2606) at java.base/java.io.ObjectInputStream.readFields(ObjectInputStream.java:691) at com.solibri.sae.redox.Property.readObject(Unknown Source) at jdk.internal.reflect.GeneratedMethodAccessor42.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:569) at java.base/java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1100) at java.base/java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2423) at java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2257) at java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1733) at java.base/java.io.ObjectInputStream$FieldValues.<init>(ObjectInputStream.java:2606) at java.base/java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:647) at com.solibri.sae.redox.Model$ClassNode.readObject(Unknown Source) at jdk.internal.reflect.GeneratedMethodAccessor64.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:569) at java.base/java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1100) at java.base/java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2423) at java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2257) at java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1733) at java.base/java.io.ObjectInputStream.readArray(ObjectInputStream.java:2157) at java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1721) at java.base/java.io.ObjectInputStream$FieldValues.<init>(ObjectInputStream.java:2606) at java.base/java.io.ObjectInputStream.readFields(ObjectInputStream.java:691) at java.base/java.util.Vector.readObject(Vector.java:1158) at java.base/jdk.internal.reflect.GeneratedMethodAccessor24.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:569) at java.base/java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1100) at java.base/java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2423) at java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2257) at java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1733) at java.base/java.io.ObjectInputStream$FieldValues.<init>(ObjectInputStream.java:2606) at java.base/java.io.ObjectInputStream.readFields(ObjectInputStream.java:691) at com.solibri.sae.redox.Model.readObject(Unknown Source) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:569) at java.base/java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1100) at java.base/java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2423) at java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2257) at java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1733) at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:509) at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:467) at com.solibri.sae.redox.Model.openModel(Unknown Source) at com.solibri.sae.redox.Model.openModel(Unknown Source) at com.solibri.saf.plugins.modelhandling.actions.OpenModelAction.a(Unknown Source) at com.solibri.saf.plugins.modelhandling.actions.OpenModelAction.openModel(Unknown Source) at com.solibri.saf.plugins.modelhandling.actions.MultiModelOpenAction$b.construct(Unknown Source) at com.solibri.sae.ui.ae.run(Unknown Source) at java.base/java.lang.Thread.run(Thread.java:840)Edit: I have the file still open but can’t track down the culprit. In this file it can be reproduced with every save file. In a fresh file with all the bunch of exported resources loaded again it does not give me a build error …
Edit 2: I think I found it
In my open file (which becomes corrupt on save and re-opening) there seems to be a classification which is missing a Custom Property - it just shows blank.

I’ll have to investigate why this one is not showing up any more. Still it is not clear for me how this can be produced at all as loading classifications with such dependencies in a new file could not (?!) reproduced as it is not possible at all - obviously there seems to be some kind of eception handling. No warning though, but it just does not load. Which is probably the reason why I did not detect this earlier.
What I don’t understand is why this is only now becoming a problem as nothing has really changed in the meantime. The first explanation I have is a missing .jar file - but this must have been missing for a while.
So currently it looks like I have …
- … loaded a classification in my exisiting .smc which had a custom property reference in its settings.
- Due to the missing .jar dependecy the classification became corrupt within the file - no warning
- I saved the ressources and probably have overwritten this classification - now with the blank values - no warning again
- The original file was saved with the blank value in the classification - triggers the infamous Build Error without a clear hint why
- The classifciation (now saved with blank values) can’t be opened again - preventing Build Errors in newly created files but no warnings or hints are given which makes it difficult to notice or even detect this bug.
This is my guess how it was indeed somehow possible to load the classifications with missing property reference.
In any case, it would be highly appreciated if there were a proper mechanism (1.) with information while saving and opening to prevent files from becoming unopenable without any indication of how and why this happens when such situations occur! Additionally, information messages (2.) within the application itself when resources cannot be loaded for whatever reason would be a great help to avoid searching for a needle in a haystack - please address!
Additionally some thoughts on improvemensts beyond warnings and hints as I am dealing with ressources a lot and I am struggling with well known issues again …
- A better understanding for dependencies in general
- A better understanding for cross references
- A better ressource management
- …
Updated an old topic here:
https://society.solibri.com/topic/1830/some-thoughts-about-the-black-box-of-classification-relationships?_=1752834069627 -
@JSN said in Self Destruction Mode Activated - What is corrupting my file?:
Has this been fixed in >25.9.0.82
Seems like I can at least open the files again?
Hello! Yes, this has been fixed in 25.9.0:
Resolved an issue where SMC models with specific JavaScript ITO columns were getting corrupt.
Kind regards,
Toni -
@tonigyllenberg said in Self Destruction Mode Activated - What is corrupting my file?:
Resolved an issue where SMC models with specific JavaScript ITO columns were getting corrupt.
Great, so not just ITO but also Classifications are more robost since the update.
However it would be pretty useful to be informed about missing API packages … not just in the log but also when opening such .smc files.A coworker could unknowingly mess up the whole file when stuff is missing.
Copyright © 2025 Solibri Inc. | Powered by NodeBB