Posted by: reformedmusings | September 8, 2008

The Linux Moneydance Kabuki Dance

Wow, where to start. I want to reduce my need for my production Windows XP virtual machine. The most frequent reason for my visits to WinXP is my dependence on Quicken for financial management. I explored Linux alternatives to Quicken about a year ago, but didn’t find anything that filled all my requirements, which include online banking updates and check printing. Even today, only one program meets all these needs. That program is Moneydance for Linux.

UPDATE: Printing solved! I have modified this post to reflect the changes that enabled printing from Moneydance, and probably most other Java applications as well.

Looking back on the last two days, I’m reminded of the phrase that I never wanted to hear from my pilots or crewmembers in a flight debrief: “It seemed like a good idea at the time…” It’s been an exhausting journey, but a successful one.

As a reminder, I’m using Kubuntu Linux, Hardy Heron 8.04.1 version. The system requirements for Moneydance seemed modest enough. It’s a Java application so required an operational Java setup. I had that squared away, or so I thought. Moneydance has three possible download configurations: the application tar, the application + java virtual machine tar, and a script installation that includes a java machine. I’ll skip the gory details of the many failed efforts and provide what eventually worked, and I believe will do so predictably.

Before we start, I must report that some have reported success by using the Moneydance script installation on a fresh Linux install before any Java was introduced to the system. My system has tons of stuff installed. I tried at one point to purge it of all the Java, but that didn’t help. If the script installation fails to produce a usable Moneydance, then the following procedure should do so.

I am indebted to Trand on this thread for steering me in the right direction on completing Java installations. I consulted a host of forum posts on the printing issues between Sun Java and CUPS. I cite the definitive one below.

First, ensure that you have a properly configured java virtual machine (JVM) and java runtime environment (JRE). I had zero success trying to install the JVM distributed with Moneydance, so I originally used Sun Java 1.6 from the Hardy repositories. This worked except that there’s a bug in Sun Java 1.5 and 1.6 that prevents programs from printing in CUPS, the standard print method in Linux. So, I switched to Java OpenJDK 1.6 instead which fixed the printing bug. I’ve rewritten the instructions below to reflect using the OpenJDK.

First, install the following Hardy packages (or equivalents in your distribution) either from Adept, Synaptic, KPackage, or in the console:

sudo aptitude install openjdk-6-jre openjdk-6-jre-headless openjdk-6-jre-lib openjdk-6-jdk icepick icepick-gcj icedtea-java7-jdk icedtea-java7-jre tzdata-java icedtea-gcjwebplugin icedtea-java7-plugin

Optionally, I also included the font package:

sudo aptitude install sun-java6-fonts

The fonts will install the Sun Java JRE, but that’s OK. It will be a minimal install and we won’t use it. You can theoretically use any Java installation available for your distribution. According to the Moneydance docs, it needs at least Java 1.4.

But you’re not done when you install the JVM, because apparently none finish the job as needed. So, in a console, you need to update the Java configuration in the system:

sudo update-java-alternatives -s java-6-openjdk

If you use another java version, replace the “java-6-openjdk” with your version as it appears in the /usr/lib/jvm/ directory. It’s the link called xxxxxxxx (java-6-openjdk in my case) with the associated xxxxxxxx.jinfo file (java-6-jdk.jinfo in my case).

NOTE: If you decide to use Sun Java 1.6, you will get an error when using its default update-java-alternatives script that says “No alternatives for”. That’s because the Sun java browser add-in has changed names from to plugin So, you have to edit the /usr/lib/jvm/xxxxxxxx.jinfo file to change the plug-in name appropriately. You’ll need root privileges to do that, for example in the console:

sudo nano /usr/lib/jvm/java-6-sun.jinfo

The plug-in name is the last one in the list. According to this bug report, this should be fixed in Java 1.6.07 when it is released. Sun Java 1.6.06 is current in the Hardy repositories. OpenJDK 6 does not exhibit this error.

Next, you need to edit the /etc/jvm file. It contains a list of all the Java versions installed on the system. The top item on the list is the default version and it must be the primary one that Moneydance will use. In my case, that was the /usr/lib/jvm/java-6-openjdk entry. If that entry is already in the jvm file, you simply want to move it to the top of the list. If it’s not there, just create it. Again, you’ll need have root privileges to edit the jvm file.

When all this is done, you can type this at the console:

java -version

and get a result similar to this for Java OpenJDK 1.6:

java version “1.6.0_0”
OpenJDK  Runtime Environment (build 1.6.0_0-b11)
OpenJDK Server VM (build 1.6.0_0-b11, mixed mode)

I recommend one more step to ensure that Moneydance finds the correct Java setup. In your home directory, delete the .install4j file:

rm ~/.install4j

This will be recreated by Java when Moneydance is run for the first time.

At this point, you should copy the Moneydance distribution file without Java (Moneydance_linux_x86.tar.gz) into your home directory from wherever you downloaded it, then expand it there. Starting in your download directory:

cp Moneydance_linux_x86.tar.gz ~
cd ~
tar -xf Moneydance_linux_x86.tar.gz

Then run Moneydance:

cd ~/Moneydance

If you are not running compiz-fusion, you should see the opening screens of Moneydance. Java apparently doesn’t like compiz-fusion, but it isn’t consistent. Trying to open the same dialog box under compiz-fusion several times in a row will work some of those times. I’m told that this is a known issue.

Moneydance will NOT PRINT under Sun Java 1.5 or 1.6, but it will under Java OpenJDK I had everything else, including web banking, working under Moneydance but it took a while to get past the Java/CUPS print issues over which the Moneydance developers have no control. According to this post, the issue is a disconnect between Sun’s Java and the CUPS printing system used by Linux. The fix suggested further up on that page does not work for me, but changing from Sun Java 1.6 to OpenJDK 1.6 did work. It took over two days to find that solution in the myriad of Internet posts on the subject.

I really appreciate Moneydance’s developers support for Linux. Moneydance isn’t free, but it is the only Linux financial program that does everything I need, including Internet banking and check printing. I’m still testing it out, so there will probably be more to follow…

UPDATE2: Thanks to porchrat, here are some other useful commands to check Java’s status:

sudo update-alternatives –display java
sudo update-alternatives –display javac

The first will list all the Java VMs on your system and give their priorities. The second does the same for the Java compilers. The two lists should coincide.



  1. […] 2008 for Linux As I said in this post, I’m trying to replace the few remaining Windows programs with native Linux ones. My Windows […]

  2. […] like the newer versions of Open Java as much, especially the fonts. So, I simply referred to my earlier post on Moneydance and typed these lines in the […]

  3. […] finances in Linux. It works great and effortlessly downloads transactions from my bank. I had some initial problems with getting the right java version to make the print routines work correctly, but that was the last problem that I […]

Leave a Reply

Please log in using one of these methods to post your comment: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s


%d bloggers like this: