Moneydance needs to leverage JDK 11.0.3+12 LTS to remove issue with non-US Locale Date parsing (dates using text values for months)

rapscallion's Avatar

rapscallion

20 Jun, 2019 05:09 PM

I have written an extension that needs to parse (transaction) dates in the form dd MMM yyyy (i.e. contains a textual name for the month) for multiple Locales. Although this works just fine in Eclipse and also in Moneydance with English short month names, i18N Moneydance integration fails because Moneydance packages JDK 11.0.1+13 which will not process non-English Locales properly. Example of month names using this JDK:
-- List of short months: [Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec, ]
-- List of german short months: [Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec, ]

You can test this using the following code:

// DateFormatSymbols in default Locale
final DateFormatSymbols dfs = new DateFormatSymbols();

// DateFormatSymbols in pre defined Locale
final DateFormatSymbols german_dfs = new DateFormatSymbols(Locale.GERMAN);

String[] shortMonths = dfs.getShortMonths();
System.out.print("List of short months: ");
System.out.println(Arrays.toString(shortMonths));

String[] germanShortMonths = german_dfs.getShortMonths();
System.out.print("List of german short months: ");
System.out.println(Arrays.toString(germanShortMonths));

I have replaced the packaged JDK in the Moneydance Application with 11.0.3+12-LTS (which I verified was running my code correctly in Eclipse) by using a symlink for the 'Home' directory. This now allows the extension to work as was designed and month names for alternate Locales now works as shown below:
-- List of short months: [Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec, ]
-- List of german short months: [Jan., Feb., März, Apr., Mai, Juni, Juli, Aug., Sep., Okt., Nov., Dez., ]

Please, can you repackage Moneydance using JDK 11.0.3+12-LTS at a minimum (although I suspect that the bug was fixed in 11.0.2 actually). Thanks in advance.

  1. 1 Posted by dwg on 20 Jun, 2019 09:30 PM

    dwg's Avatar

    I'm a fellow user.

    If you believe the issue was resolved in Java 11.0.2, the latest release of Moneydance 2019.3 build 1880 uses Java 11.0.2+9

  2. 2 Posted by rapscallion on 20 Jun, 2019 09:39 PM

    rapscallion's Avatar

    Hi and thanks for your note. I didn't test Java 11.0.2, so I cannot be certain.

    However, I am already using 2019.3.build 1880 and when I look at the packaged JDK (at runtime) by peeking at System properties, java.version was set to Java 11.0.1+13. How did you derive the use of 11.0.2?

  3. 3 Posted by dwg on 20 Jun, 2019 09:43 PM

    dwg's Avatar

    I opened the directory that Moneydance installed Java into and issued a "java -version" command.

  4. 4 Posted by rapscallion on 20 Jun, 2019 09:59 PM

    rapscallion's Avatar

    i should say that I am running on Mac OS, you?

  5. 5 Posted by dwg on 20 Jun, 2019 10:05 PM

    dwg's Avatar

    Windows

  6. 6 Posted by rapscallion on 17 Sep, 2019 04:40 PM

    rapscallion's Avatar

    will there be any resolution to this for Mac OS?

  7. Support Staff 7 Posted by Sean Reilly on 17 Sep, 2019 09:43 PM

    Sean Reilly's Avatar

    Hi Mike,

    Yes, I've just updated the build system so that we'll be using openjdk 13 for the next preview build. I'm still working on some behind-the-scenes changes and then will push that new preview build soon.

    Thanks!
    Sean

    --
    Sean Reilly
    Developer, The Infinite Kind
    https://infinitekind.com

  8. 8 Posted by rapscallion on 17 Sep, 2019 11:56 PM

    rapscallion's Avatar

    Hi Sean, Thanks, much appreciated! Regards, Mike.

  9. 9 Posted by rapscallion on 26 Oct, 2019 08:03 AM

    rapscallion's Avatar

    Any update on the new version availability?

  10. 10 Posted by derekkent23 on 26 Oct, 2019 11:57 AM

    derekkent23's Avatar

    I am not support staff, just a user.

    Preview build 2019.4(1892) is running on Java: 13 (Oracle Corporation).
    Download from
    https://infinitekind.com/preview

    Hope this helps

  11. System closed this discussion on 25 Jan, 2020 12:00 PM.

  12. rapscallion re-opened this discussion on 06 Apr, 2020 03:27 PM

  13. 11 Posted by rapscallion on 06 Apr, 2020 03:34 PM

    rapscallion's Avatar

    Hi Sean,

    I upgraded to the latest preview Moneydance for Mac, but to my surprise the bundled JVM (console log shows 13.01...) does not appear to support the non-English locale date conversions as described earlier in this article.

    As a test, I downloaded JDK 13.01 directly from Oracle and installed this on my Mac. I then renamed the vm.jdk folder in the Moneydance directory to 'oldvm.jdk' and symlinked vm.jdk to the downloaded JDK 13.01 version I got from Oracle. Low and behold, it all worked.

    So I am unsure what exactly you are packaging as a JDK VM with Moneydance, but it is a problem as dates with non-English locales aren't being properly processed.

    Any ideas?

    Regards, Mike.

  14. Support Staff 12 Posted by Sean Reilly on 22 Apr, 2020 02:48 PM

    Sean Reilly's Avatar

    Hi Mike,

    We use the OpenJDK because Oracle's JDK isn't available for unlimited redistribution, at least not for prices we can afford.

    We use jlink to build the JVM bundled with Moneydance. I wonder if there is a certain module missing that could cause what you're seeing?

    java.base,java.compiler,java.prefs,java.datatransfer,java.desktop,java.instrument,java.logging,java.management,java.security.sasl,java.naming,java.net.http,java.transaction.xa,java.se,java.security.jgss,java.scripting,java.sql,java.xml.crypto,java.sql.rowset,java.xml,jdk.crypto.ec,jdk.crypto.cryptoki,jdk.accessibility,jdk.unsupported,jdk.unsupported.desktop,jdk.jsobject,jdk.security.auth,jdk.security.jgss,jdk.xml.dom,jdk.zipfs,javafx.swing,javafx.controls,javafx.graphics,javafx.web,jdk.internal.jvmstat,jdk.charsets

    Thanks,
    Sean

  15. 13 Posted by rapscallion on 23 Apr, 2020 07:02 PM

    rapscallion's Avatar

    Hi Sean,

    I have not used jlink before, but perhaps it is missing something because according to Oracle…

    "From Java 11 forward, therefore, Oracle JDK builds and OpenJDK builds <http://jdk.java.net/> will be essentially identical…"

    So, I am not sure why the packaged Moneydance OpenJDK acts differently from what I downloaded, but there must be a difference somewhere.

    Regards,

    Mike.

  16. System closed this discussion on 23 Jul, 2020 07:10 PM.

  17. rapscallion re-opened this discussion on 07 Oct, 2020 12:19 PM

  18. 14 Posted by rapscallion on 07 Oct, 2020 12:26 PM

    rapscallion's Avatar

    Hi Sean,

    I have been using the latest version of Moneydance, but the packaged Java VM is still giving me issues because it will not parse the months correctly (as mentioned earlier in this discussion thread).

    I have been using a standalone version of Java SDK as follows to workaround this problem:
    1) cd /Applications/Moneydance.app/Contents/Plugns/vm.jdk/Contents
    2) mv Home OldHome
    3) ln -s path-to-new-Java-Home-dir Home

    The issue is probably with 'what' JVM and libraries or 'how' you embed these with Moneydance. I am now using OpenJDK 14.0.2 and this works OK. It's just a pain to have to do this every time a new version of Moneydance is installed through upgrades.

    Regards, Mike.

  19. Support Staff 15 Posted by Sean Reilly on 08 Oct, 2020 09:06 AM

    Sean Reilly's Avatar

    Hi Mike,
    It looks like the packaging I did of the jvms missed out on the java.localedata jmodule which I'd bet caused this. An updated preview will be available ASAP with this fix.

    However, since there are a bunch of people who won't have this fix I'd recommend as much as possible not using text dates for UI stuff, and certainly not have anything dependent upon locale for non-UI data.

    Thanks,
    Sean

    --
    Sean Reilly
    Developer, The Infinite Kind
    https://infinitekind.com

  20. 16 Posted by rapscallion on 08 Oct, 2020 09:09 AM

    rapscallion's Avatar

    Hi Sean,

    The problem is that I am loading data from PDFs (e.g. Visa card statements) and the dates on the statement are of the form day/text-month, so I cannot change this. I parse the PDF to extract the data and depending on your locale, the month names will be different - i.e. German is different from English which is different from Dutch. So, this functionality is absolutely required.

    Regards,

    Mike.

    Michael P. Leznar
    Director | Leznar Software & Services BV
    www.leznarsoftware.com
    Tel: +31 6 2185 6272

  21. Support Staff 17 Posted by Sean Reilly on 08 Oct, 2020 09:23 AM

    Sean Reilly's Avatar

    Hi Mike,

    Ah ok, I see now. So we've got a problem with everyone who already has moneydance without the locale information. I don't think there's any other option than to bundle at least some locale data in your extension.

    To help with this I've attached a class that I use in moneydance to interpret dates that could be in any format. It has support for text month names but doesn't yet apply localised names, however it would be easy to add that to the month-name-to-numbers map. Hopefully this can help.

    Thanks,
    Sean

    --
    Sean Reilly
    Developer, The Infinite Kind
    https://infinitekind.com

  22. 18 Posted by rapscallion on 08 Oct, 2020 09:29 AM

    rapscallion's Avatar

    Hi Sean,

    Thanks for your email and the code. However, as I haven’t distributed my extension as yet, there is no issue for anyone but me. I can wait for the amendments to the bundled JVM in Moneydance, I don’t really want to have to add more code when the standard Java JVM code for parsing local specific dates with textual months already does it fine — it’s just that I would like you guys to package the JVM with that functionality please :)

    Thanks in advance.

    Regards,

    Mike.

    Michael P. Leznar
    Director | Leznar Software & Services BV
    www.leznarsoftware.com
    Tel: +31 6 2185 6272

  23. Support Staff 19 Posted by Sean Reilly on 08 Oct, 2020 10:06 PM

    Sean Reilly's Avatar

    Hi Mike,

    That sounds like a great plan to me. I've already made the change to include the locale module with our custom JVMs, so that'll definitely be in the next release.

    Thanks,
    Sean

    --
    Sean Reilly
    Developer, The Infinite Kind
    https://infinitekind.com

  24. 20 Posted by rapscallion on 08 Oct, 2020 10:25 PM

    rapscallion's Avatar

    Hi Sean,

    Thanks. Let me know when this gets released into beta and I can test it for you :)

    Regards,

    Mike.

    Michael P. Leznar
    Director | Leznar Software & Services BV
    www.leznarsoftware.com
    Tel: +31 6 2185 6272

  25. 21 Posted by rapscallion on 01 Jan, 2021 11:56 AM

    rapscallion's Avatar

    Just an update... I cannot do this using the new Zulu JDK on a M1 equipped MacBook, as loading the JVM gives an error.

    When is it likely that we will get a properly packaged Mac compatible JVM with full I18N support with Moneydance, that runs correctly on both Intel and M1 Macs to resolve this long standing issue?

Reply to this discussion

Internal reply

Formatting help / Preview (switch to plain text) No formatting (switch to Markdown)

Attaching KB article:

»

Attached Files

You can attach files up to 10MB

If you don't have an account yet, we need to confirm you're human and not a machine trying to post spam.

Keyboard shortcuts

Generic

? Show this help
ESC Blurs the current field

Comment Form

r Focus the comment reply box
^ + ↩ Submit the comment

You can use Command ⌘ instead of Control ^ on Mac