Error exporting to json
I'm getting the following error when exporting to json with version 0.0.2. Whereas version 0.0.1 from github actually works without any error.
% java -jar sunriise-export-0.0.2-SNAPSHOT-exec.jar export.json money.mny pwd moneyjson
2022-09-01 00:34:52,119 [INFO ] [main] ExportToJSONDirCmd.export(ExportToJSONDirCmd.java:53) – dbFile=money.mny
2022-09-01 00:34:52,122 [INFO ] [main] ExportToJSONDirCmd.export(ExportToJSONDirCmd.java:54) – outDir=moneyjson
2022-09-01 00:34:52,122 [INFO ] [main] AbstractExportTo.initThreadPool(AbstractExportTo.java:45) – ThreadPool is NOT enable.
2022-09-01 00:34:52,125 [INFO ] [main] MnyDb.openDb(MnyDb.java:380) – # Opening dbFile=/Volumes/MacApps/src/microsoftmoney/money.mny, readOnly=true, encrypted=true
2022-09-01 00:34:52,192 [INFO ] [main] AbstractExportToDir.startExportToDir(AbstractExportToDir.java:96) – > startExport, outDir=moneyjson
2022-09-01 00:34:52,234 [WARN ] [main] EnumAccountType.toAccountType(EnumAccountType.java:130) – Invalid mnyType=8
2022-09-01 00:34:52,235 [WARN ] [main] TableAccountUtils.deserialize(TableAccountUtils.java:419) – AccountType.UNKNOWN for account=Accounts Receivable
2022-09-01 00:34:52,468 [INFO ] [main] AbstractExportTo.visitAccount(AbstractExportTo.java:263) – > 1/38 accountName=Bank Account
2022-09-01 00:34:52,478 [INFO ] [main] MnyDb.close(MnyDb.java:206) – Closing dbFile=money.mny
2022-09-01 00:34:52,499 [ERROR ] [main] ExportToJSONDirCmd.export(ExportToJSONDirCmd.java:68) – java.io.IOException: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Invalid type definition for type java.util.stream.ReferencePipeline$Head
: Failed to construct BeanSerializer for [simple type, class java.util.stream.ReferencePipeline$Head<java.lang.Object,com.hungle.sunriise.mnyobject.Transaction>]: (java.lang.reflect.InaccessibleObjectException) Unable to make public final boolean java.util.stream.AbstractPipeline.isParallel() accessible: module java.base does not "opens java.util.stream" to unnamed module @256216b3 (through reference chain: com.hungle.sunriise.mnyobject.impl.DefaultAccount["transactionStream"])
java.io.IOException: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Invalid type definition for type java.util.stream.ReferencePipeline$Head
: Failed to construct BeanSerializer for [simple type, class java.util.stream.ReferencePipeline$Head<java.lang.Object,com.hungle.sunriise.mnyobject.Transaction>]: (java.lang.reflect.InaccessibleObjectException) Unable to make public final boolean java.util.stream.AbstractPipeline.isParallel() accessible: module java.base does not "opens java.util.stream" to unnamed module @256216b3 (through reference chain: com.hungle.sunriise.mnyobject.impl.DefaultAccount["transactionStream"])
at com.hungle.sunriise.json.JSONUtils.writeValue(JSONUtils.java:263) ~[sunriise-core-0.0.2-SNAPSHOT.jar!/:?]
at com.hungle.sunriise.json.JSONUtils.writeValue(JSONUtils.java:243) ~[sunriise-core-0.0.2-SNAPSHOT.jar!/:?]
at com.hungle.sunriise.export.json.ExportToJSON.exportAccountDetailToDir(ExportToJSON.java:166) ~[classes!/:?]
at com.hungle.sunriise.export.AbstractExportToDir.exportAccountDetail(AbstractExportToDir.java:181) ~[classes!/:?]
at com.hungle.sunriise.export.AbstractExportTo.exportAccount(AbstractExportTo.java:321) ~[classes!/:?]
at com.hungle.sunriise.export.AbstractExportToDir.exportAccount(AbstractExportToDir.java:171) ~[classes!/:?]
at com.hungle.sunriise.export.AbstractExportTo.visitAccount(AbstractExportTo.java:286) ~[classes!/:?]
at com.hungle.sunriise.account.AbstractAccountVisitor._visitAccount(AbstractAccountVisitor.java:291) ~[sunriise-core-0.0.2-SNAPSHOT.jar!/:?]
at com.hungle.sunriise.account.AbstractAccountVisitor._visit(AbstractAccountVisitor.java:238) ~[sunriise-core-0.0.2-SNAPSHOT.jar!/:?]
at com.hungle.sunriise.export.AbstractExportToDir.exportToDir(AbstractExportToDir.java:81) ~[classes!/:?]
at com.hungle.sunriise.export.AbstractExportToDir.export(AbstractExportToDir.java:60) ~[classes!/:?]
at com.hungle.sunriise.export.AbstractExportTo.export(AbstractExportTo.java:191) ~[classes!/:?]
at com.hungle.sunriise.export.json.ExportToJSONDirCmd.export(ExportToJSONDirCmd.java:66) [classes!/:?]
at com.hungle.sunriise.export.json.ExportToJSONCmd.main(ExportToJSONCmd.java:78) [classes!/:?]
at app.ExportToJSON.main(ExportToJSON.java:15) [classes!/:?]
at app.ModuleExportMain.main(ModuleExportMain.java:67) [classes!/:?]
at jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[?:?]
at java.lang.reflect.Method.invoke(Method.java:577) ~[?:?]
at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48) [sunriise-export-0.0.2-SNAPSHOT-exec.jar:?]
at org.springframework.boot.loader.Launcher.launch(Launcher.java:87) [sunriise-export-0.0.2-SNAPSHOT-exec.jar:?]
at org.springframework.boot.loader.Launcher.launch(Launcher.java:51) [sunriise-export-0.0.2-SNAPSHOT-exec.jar:?]
at org.springframework.boot.loader.PropertiesLauncher.main(PropertiesLauncher.java:597) [sunriise-export-0.0.2-SNAPSHOT-exec.jar:?]
Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Invalid type definition for type java.util.stream.ReferencePipeline$Head
: Failed to construct BeanSerializer for [simple type, class java.util.stream.ReferencePipeline$Head<java.lang.Object,com.hungle.sunriise.mnyobject.Transaction>]: (java.lang.reflect.InaccessibleObjectException) Unable to make public final boolean java.util.stream.AbstractPipeline.isParallel() accessible: module java.base does not "opens java.util.stream" to unnamed module @256216b3 (through reference chain: com.hungle.sunriise.mnyobject.impl.DefaultAccount["transactionStream"])
at com.fasterxml.jackson.databind.exc.InvalidDefinitionException.from(InvalidDefinitionException.java:72) ~[jackson-databind-2.10.1.jar!/:2.10.1]
at com.fasterxml.jackson.databind.SerializerProvider.reportBadTypeDefinition(SerializerProvider.java:1163) ~[jackson-databind-2.10.1.jar!/:2.10.1]
at com.fasterxml.jackson.databind.ser.BeanSerializerFactory.constructBeanOrAddOnSerializer(BeanSerializerFactory.java:454) ~[jackson-databind-2.10.1.jar!/:2.10.1]
at com.fasterxml.jackson.databind.ser.BeanSerializerFactory.findBeanOrAddOnSerializer(BeanSerializerFactory.java:286) ~[jackson-databind-2.10.1.jar!/:2.10.1]
at com.fasterxml.jackson.databind.ser.BeanSerializerFactory._createSerializer2(BeanSerializerFactory.java:231) ~[jackson-databind-2.10.1.jar!/:2.10.1]
at com.fasterxml.jackson.databind.ser.BeanSerializerFactory.createSerializer(BeanSerializerFactory.java:165) ~[jackson-databind-2.10.1.jar!/:2.10.1]
at com.fasterxml.jackson.databind.SerializerProvider._createUntypedSerializer(SerializerProvider.java:1388) ~[jackson-databind-2.10.1.jar!/:2.10.1]
at com.fasterxml.jackson.databind.SerializerProvider._createAndCacheUntypedSerializer(SerializerProvider.java:1356) ~[jackson-databind-2.10.1.jar!/:2.10.1]
at com.fasterxml.jackson.databind.SerializerProvider.findPrimaryPropertySerializer(SerializerProvider.java:640) ~[jackson-databind-2.10.1.jar!/:2.10.1]
at com.fasterxml.jackson.databind.ser.impl.PropertySerializerMap.findAndAddPrimarySerializer(PropertySerializerMap.java:72) ~[jackson-databind-2.10.1.jar!/:2.10.1]
at com.fasterxml.jackson.databind.ser.BeanPropertyWriter._findAndAddDynamic(BeanPropertyWriter.java:895) ~[jackson-databind-2.10.1.jar!/:2.10.1]
at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:705) ~[jackson-databind-2.10.1.jar!/:2.10.1]
at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:722) ~[jackson-databind-2.10.1.jar!/:2.10.1]
at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:166) ~[jackson-databind-2.10.1.jar!/:2.10.1]
at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:480) ~[jackson-databind-2.10.1.jar!/:2.10.1]
at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:319) ~[jackson-databind-2.10.1.jar!/:2.10.1]
at com.fasterxml.jackson.databind.ObjectWriter$Prefetch.serialize(ObjectWriter.java:1433) ~[jackson-databind-2.10.1.jar!/:2.10.1]
at com.fasterxml.jackson.databind.ObjectWriter._configAndWriteValue(ObjectWriter.java:1135) ~[jackson-databind-2.10.1.jar!/:2.10.1]
at com.fasterxml.jackson.databind.ObjectWriter.writeValue(ObjectWriter.java:977) ~[jackson-databind-2.10.1.jar!/:2.10.1]
at com.hungle.sunriise.json.JSONUtils.writeValue(JSONUtils.java:341) ~[sunriise-core-0.0.2-SNAPSHOT.jar!/:?]
at com.hungle.sunriise.json.JSONUtils.writeValue(JSONUtils.java:360) ~[sunriise-core-0.0.2-SNAPSHOT.jar!/:?]
at com.hungle.sunriise.json.JSONUtils.writeValue(JSONUtils.java:259) ~[sunriise-core-0.0.2-SNAPSHOT.jar!/:?]
... 21 more
2022-09-01 00:34:52,506 [INFO ] [main] ExportToJSONDirCmd.export(ExportToJSONDirCmd.java:70) – < DONE
Comments (7)
-
-
Hmm … I wonder if this is related to JDK version given the error is indicates something about “module”
module java.base does not "opens java.util.stream" to unnamed module @6ea6d14e
Can you give me the output of
java --version
-
I'm running sunriise in a container so it is straightforward to test various versions of Java. I'm using the official openjdk images from Docker.
The exception above starts occurring in
openjdk:16
and continues throughopenjdk:21
.openjdk version "16.0.2" 2021-07-20 OpenJDK Runtime Environment (build 16.0.2+7-67) OpenJDK 64-Bit Server VM (build 16.0.2+7-67, mixed mode, sharing)
Running with
openjdk:11
throughopenjdk:15
exports successfully but with a few warnings.openjdk version "11.0.16" 2022-07-19 OpenJDK Runtime Environment 18.9 (build 11.0.16+8) OpenJDK 64-Bit Server VM 18.9 (build 11.0.16+8, mixed mode, sharing) 2023-01-11 14:35:30,485 [INFO ] [main] ExportToJSONDirCmd.export(ExportToJSONDirCmd.java:53) – dbFile=/opt/app/mnydata/My Money.mny 2023-01-11 14:35:30,495 [INFO ] [main] ExportToJSONDirCmd.export(ExportToJSONDirCmd.java:54) – outDir=/opt/app/mnydata 2023-01-11 14:35:30,498 [INFO ] [main] AbstractExportTo.initThreadPool(AbstractExportTo.java:45) – ThreadPool is NOT enable. 2023-01-11 14:35:30,517 [INFO ] [main] MnyDb.openDb(MnyDb.java:380) – # Opening dbFile=/opt/app/mnydata/My Money.mny, readOnly=true, encrypted=true 2023-01-11 14:35:30,648 [INFO ] [main] AbstractExportToDir.startExportToDir(AbstractExportToDir.java:96) – > startExport, outDir=/opt/app/mnydata 2023-01-11 14:35:31,187 [INFO ] [main] AbstractExportTo.visitAccount(AbstractExportTo.java:263) – > 1/2 accountName=Checking WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by com.fasterxml.jackson.databind.util.ClassUtil (jar:file:/opt/app/sunriise-export-0.0.2-SNAPSHOT-exec.jar!/BOOT-INF/lib/jackson-databind-2.10.1.jar!/) to method java.util.stream.AbstractPipeline.isParallel() WARNING: Please consider reporting this to the maintainers of com.fasterxml.jackson.databind.util.ClassUtil WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release 2023-01-11 14:35:31,644 [INFO ] [main] AbstractExportTo.visitAccount(AbstractExportTo.java:263) – > 2/2 accountName=Credit Card 2023-01-11 14:35:31,799 [INFO ] [main] MnyDb.close(MnyDb.java:206) – Closing dbFile=/opt/app/mnydata/My Money.mny 2023-01-11 14:35:31,821 [INFO ] [main] ExportToJSONDirCmd.export(ExportToJSONDirCmd.java:70) – < DONE
And just to be thorough,
openjdk:10
and prior fails with an understandable error.Exception in thread "main" java.lang.UnsupportedClassVersionError: app/ModuleExportMain has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 54.0
-
Thanks for the data. For now, please use JDK version 11.
Since JDK 17 is also an LTS so I will test to make sure that the next build will work for JDK 17.
-
I figured out the cause for the tool to fail under JDK 17. Will fix for next build. For now, please use JDK 11.
-
I’ve created a test distribution that should work for Java 17 (I’ve target JDK 17 since it is LTS version). You can download the test version at https://bitbucket.org/hleofxquotesteam/dist-sunriise-test/downloads/
-
I had successful exports both with
openjdk:17
andopenjdk:21
. Thanks! Feel free to close this issue. - Log in to comment
My json export also fails with the same exception stack as above. (I can’t find my old
SNAPSHOT-0.0.1
or I would also confirm it is a regression.)