JDK/JRE 21 update with Moneydance Personal Finance

Hopefully this helps someone using Moneydance Personal Finance with the recent Java 21 changes.

The following posts did not help to fully resolve my issues with Moneydance:

https://archlinux.org/news/incoming-changes-in-jdk-jre-21-packages-may-require-manual-intervention/

Moneydance adds its own dependency:

$ sudo pacman -Sy jdk-openjdk

resolving dependencies...
looking for conflicting packages...
:: jdk-openjdk and jre-openjdk are in conflict. Remove jre-openjdk? [y/N] y
:: jdk-openjdk and jre-openjdk-headless are in conflict. Remove jre-openjdk-headless? [y/N] y
error: failed to prepare transaction (could not satisfy dependencies)
:: removing jre-openjdk breaks dependency 'jre-openjdk' required by moneydance

Tried to remove them for now…

$ sudo pacman -R jre-openjdk-headless jre-openjdk moneydance

checking dependencies...
error: failed to prepare transaction (could not satisfy dependencies)
:: removing jre-openjdk breaks dependency 'jre21-openjdk=21.u35-3' required by jdk-openjdk

Add that one to the list:

$ sudo pacman -R jre-openjdk-headless jre-openjdk moneydance jdk-openjdk

...
Packages (4) jdk-openjdk-21.u35-3  jre-openjdk-21.u35-3  jre-openjdk-headless-21.u35-3  moneydance-2023.5005-1

:: Do you want to remove these packages? [Y/n] Y    

Process the full system update… however you choose, I did:

$ pamac upgrade

Add back Moneydance:

$ pamac install moneydance                                                                                                                                                                                           

Warning: moneydance is only available from AUR
Preparing...
Cloning moneydance build files...
Generating moneydance information...
Checking moneydance dependencies...
Resolving dependencies...
Checking inter-conflicts...

To install (1):
jre-openjdk  21.u35-8       (Required By: moneydance)  extra  31.8 MB
To build (1):
moneydance   2023.1.5006-1                             AUR

Total download size: 31.8 MB
Total installed size: 160.4 MB

Edit build files : [e]
Apply transaction ? [e/y/N] y
  • Reboot

Try to run Moneydance - nothing happens, try it from CLI:

$ moneydance 

Picked up _JAVA_OPTIONS: -Dawt.useSystemAAFontSettings=gasp -Dawt.useSystemAAFontSettings=on
Error: LinkageError occurred while loading main class Moneydance
        java.lang.UnsupportedClassVersionError: Moneydance has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 55.0

Probably defaulting to an older version of Java still…

$ archlinux-java status

Available Java environments:
  java-11-openjdk (default)
  java-21-openjdk

Set newer one as default:

$ sudo archlinux-java set java-21-openjdk

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

For security reasons, the password you type will not be visible.

Try Moneydance… fires right up.

They sure do if only you would read what they say and not just blindly do the steps.

You pick either JRE or JDK package – depending on what you need – and install that. And since moneydance requires jre-openjdk and you tried to install the opposite one, then of course it won’t work.

(Whether depends in moneydance’s PKGBUILD should be changed is another matter.)

1 Like

You have java 11 installed. Remove it!

The jre package should be enough to have installed for running Java applications.

It should, even before this change packages should depend on java-runtime=<version> not the jre package directly. It worked before because jdk depended on jre.

1 Like

Agreed, I’m working that… but that was another rabbit hole to fix.

$ sudo pacman -R jdk11-openjdk

checking dependencies...
error: failed to prepare transaction (could not satisfy dependencies)
:: removing jdk11-openjdk breaks dependency 'java-environment' required by ant
:: removing jdk11-openjdk breaks dependency 'java-environment' required by junit
:: removing jdk11-openjdk breaks dependency 'java-environment>=8' required by maven

It’s gone…

$ archlinux-java status
Available Java environments:
  java-21-openjdk (default)