Extension Development Error
I recently purchased Moneydance for my own personal use and am pretty please with it so far.
However, I wanted to add a function that is missing and am developing program code to install as an Extension.
When I try to "install" the extension into Moneydance by either "Manage Extensions/Add From File" or directly copying the .mxt into the ~/.moneydance/fmodules directory I continue to receive the error message of "Unable to load extension with ID due to missing metadata".
I HAVE verified that in the .mxt there was the file "META-INF/moneydance_extension.properties" and I even tried creating a "com/yourdomain/lookupvalue/meta_info.dict" file. None of that worked.
What am I missing? (I can include the files if you want)
BTW, what the extension does, (or will do when I have it completed, written and tested), is goes out and looks up the current market value of a home or property and then would create a transaction in the associated ASSET account with an adjusted balance so that your home/property is up to date for calculating your total net worth.
Thank you,
Comments are currently closed for this discussion. You can start a new one.
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
Support Staff 1 Posted by Sean Reilly on 12 Jun, 2025 05:30 PM
Hello!
Thanks for using moneydance and working on an extension. Would you be able to share your build setup? We have an open source repository of extensions (https://github.com/TheInfiniteKind/moneydance_open) that currently uses ant to build it, but I can also put together a gradle file that should work too. There is a java class to run to package and sign the extension which might be what is missing.
Also, that sounds like a great way to calculate your net worth taking property values into account! I wonder if it might make sense to store the property value as a special currency, as currencies are great ways to represent relative value between different kinds of assets, and even could track the historical value in currency "snapshots".
Thanks,
Sean
--
Sean Reilly
Developer, The Infinite Kind
https://infinitekind.com
2 Posted by jdgxuser on 12 Jun, 2025 05:42 PM
Hi Sean,
Thank you for responding.
I am guessing you want the build.gradle file, correct? I am attaching
it, the moneydance_extension.properties and even the meta_info.dict to
this email.
NOTE: the build.gradle file is probably a mess right now, because I kept
editing it trying various ways to make it work, so please do not judge. :-)
The current code is written in JAVA.
Good idea on how to store that property value. Might even be able to
store not only the Market Value of the property but also then the
local/county assessed value as well. Having both there.
Anyway, I first have to figure out 'how' to write an extension and make
it all work, then can look into modifying it for various more types of
data points.
BTW, how the code works is that I have to use an API call back to the
ATTOM database. They have a quasi-free account you can use, but it is
limited on the number of requests per month. Not a problem though for a
single use situation like what I am doing.
Thank you,
Jeff
On 6/12/2025 1:30 PM, Sean Reilly wrote:
3 Posted by Stuart Beesley ... on 12 Jun, 2025 05:43 PM
FYI. The file must be named exactly
moduleid.mxt
So if your package is …/features/abc the the file must be abc.mxt
4 Posted by Stuart Beesley ... on 12 Jun, 2025 05:46 PM
Clone the IK repo
look at the priceui extension
https://github.com/TheInfiniteKind/moneydance_open/tree/main/src/co...
5 Posted by Stuart Beesley ... on 12 Jun, 2025 05:54 PM
PPS. Nothing was attached. You need to click on the link and post online (not via email).
6 Posted by jdgxuser on 12 Jun, 2025 06:20 PM
My apologies. I did not think about it needing to be attached via the website and not email.
Here are those files.
I will read through that priceui extension this evening.
7 Posted by Stuart Beesley ... on 12 Jun, 2025 06:42 PM
Download this file.. This is what a mxt should look like
https://infinitekind.com/app/md/extensions/priceui.mxt
8 Posted by jdgxuser on 13 Jun, 2025 01:22 AM
Hi Stuart,
It does appear that I not only need the signature.dict file with a 'key_version' and a 'signature' object in it, but that I also have meta_info.dict formatted incorrectly. Are there explicit instructions on the GIT hub site on how I should structure these two files? And where do I obtain the "signature" alpha-numeric key? Or can I simply copy the one from the priceui.mxt file into my directory structure when I build my project with 'gradle clean build' ?
Thank you for your help
9 Posted by Stuart Beesley ... on 13 Jun, 2025 05:24 AM
If you clone the IK open repo then you can see the meta_info.dict file format for each. The priceui one I linked can be used as a template.
Once you clone the IK open repo you can use
ant genkeys
to generate your own key file. But do be honest, you don’t actually need to self sign the mxt - it’s pointless, and it will still work. Only IK can officially sign mxt files and that wouldn’t happen for this for a long time.
10 Posted by Stuart Beesley ... on 13 Jun, 2025 05:33 AM
Read
https://infinitekind.com/developer
https://github.com/mrbray99/moneydanceproduction/wiki/Development
also this (but only look at the Java points):
https://raw.githubusercontent.com/yogi1967/MoneydancePythonScripts/...
11 Posted by Stuart Beesley ... on 16 Jun, 2025 02:28 PM
.
12 Posted by jdgxuser on 16 Jun, 2025 03:18 PM
Good morning Stuart,
First, thank you very much for the follow up.
Unfortunately, no. I have not had any progress over the weekend.
Again, I am able to run a "gradle clean build" but it simply refuses to install as an extension. Continuing to reply with the error message of 'Unable to load extension due to missing meta data'
I even cloned down the moneydance_open repo and though, maybe compiling from there might work, and I even went so far as to basically do that with only a very basic JAVA app, as Main.java. (see the code below). I put this into the /moneydance_open/src/com/moneydance/modules/features/propertylookup directory
Obviously I am not doing something correctly, but do not know what.
If I can figure out what I am doing wrong procedurally so that I can continue to develop the code for the extension I think this could be a good feature for me to add for my installation. I just cannot seem to figure out how to compile to have it install correctly.
Again, thank you,
-----------
Main.java (as a test)
package com.moneydance.modules.features.propertylookup;
import com.moneydance.apps.md.controller.FeatureModule;
import com.moneydance.apps.md.controller.FeatureModuleContext;
public class Main extends FeatureModule implements PropertyLookup {
@Override
public voit int() {
System.out.println("Property Valuation Lookup initialized");
}
@Override
public void cleanup() {
System.out.println("Property Valuation Lookup cleaned up");
}
}
13 Posted by jdgxuser on 16 Jun, 2025 03:19 PM
Good morning Stuart,
First, thank you very much for the follow up.
Unfortunately, no. I have not had any progress over the weekend.
Again, I am able to run a "gradle clean build" but it simply refuses to
install as an extension. Continuing to reply with the error message of
'Unable to load extension due to missing meta data'
I even cloned down the moneydance_open repo and though, maybe compiling
from there might work, and I even went so far as to basically do that
with only a very basic JAVA app, as Main.java. (see the code below). I
put this into the
/moneydance_open/src/com/moneydance/modules/features/propertylookup
directory
Obviously I am not doing something correctly, but do not know what.
If I can figure out what I am doing wrong procedurally so that I can
continue to develop the code for the extension I think this could be a
good feature for me to add for my installation. I just cannot seem to
figure out how to compile to have it install correctly.
Again, thank you,
-----------
Main.java (as a test)
package com.moneydance.modules.features.propertylookup;
import com.moneydance.apps.md.controller.FeatureModule;
import com.moneydance.apps.md.controller.FeatureModuleContext;
public class Main extends FeatureModule implements PropertyLookup {
@Override
public voit int() {
System.out.println("Property Valuation Lookup initialized");
}
@Override
public void cleanup() {
System.out.println("Property Valuation Lookup cleaned up");
}
}
On 6/16/2025 10:28 AM, Stuart Beesley (Mr Toolbox) wrote:
14 Posted by Stuart Beesley ... on 16 Jun, 2025 03:39 PM
Email me your mxt file to look at: …
15 Posted by jdgxuser on 16 Jun, 2025 04:56 PM
See if this comes through to you or not. I had to rename the mxt to mxone
NOTE: the JAVA code is functional as a GNOME app, but is FAR from complete
to do what I want to do.
16 Posted by Stuart Beesley ... on 16 Jun, 2025 05:27 PM
Nope - you will either have to use the forum link and upload online (not via email reply), or just send me a separate email to the address above (no spaces)
17 Posted by jdgxuser on 16 Jun, 2025 06:51 PM
See if this goes through.
18 Posted by jdgxuser on 16 Jun, 2025 06:53 PM
See if you can access this Google drive where I uploaded the MTX file.
https://drive.google.com/drive/folders/1f60ywJ1tYfrHxVRd_6I-aSpfxPb6bLFD?usp=sharing
19 Posted by Stuart Beesley ... on 16 Jun, 2025 08:21 PM
Lots of things wrong.. You didn't copy the priceui template!
I have uploaded a working mxt to your Dropbox, Main.java and a SS of the structure.. Unzip the file and note the structure and file names etc....
20 Posted by Stuart Beesley ... on 16 Jun, 2025 08:47 PM
some of the issues:
name the main file Main.java
keep the id to attomlookup everywhere
use the package com.moneydance.modules.features.attomlookup statement in Main.java
the build has to put Main and meta_info.dict into the /com/moneydance/modules/features/attomlookup Folder
the dict file should refer to build 5253 (not 2025) etc
21 Posted by Stuart Beesley ... on 17 Jun, 2025 11:28 AM
Any progress?
22 Posted by jdgxuser on 17 Jun, 2025 11:31 AM
good morning,
I was pulled to finish something yesterday and will jump back on this
today. Will reach back out to you by tomorrow.
Again, thank you for your patience and help.
On 6/16/2025 4:21 PM, Stuart Beesley (Mr Toolbox) wrote:
23 Posted by jdgxuser on 17 Jun, 2025 01:07 PM
Thank you!
Again, I will look at this more closely later, but very quickly I took
that attomlookup.mxt file you had put together and WAS able to install
it without any real issues. Other than a warning about it not being a
verified signature. Not a big deal.
So, while it does not execute anything yet under Moneydance, I was able
to install it. Let me play with it a bit now and see if I can make some
things work, like simply having it execute by prompting for an address,
performing the lookup vs the ATTOM DB API, and then returning the
associated property valuation.
Thank you!!!
On 6/17/2025 7:28 AM, Stuart Beesley (Mr Toolbox) wrote:
24 Posted by jdgxuser on 21 Jun, 2025 08:42 PM
My apologies for taking so long to respond back. I re-read all of your threads and the documentation and then completely re-wrote the entire java code with, (I hope), the correct directions. I am attaching a zipped tar ball to this response. Would you please review it and make sure I have everything defined correctly now. Additionally, IF I do, what are the proper instructions on how to use gradle to create the MXT file for installation as an extension?
25 Posted by Stuart Beesley ... on 22 Jun, 2025 09:45 AM
A few comments:
In my dropbox folder:
https://drive.google.com/drive/folders/1f60ywJ1tYfrHxVRd_6I-aSpfxPb...
- I have uploaded, another working mxt file
I have no idea about Gradle, I have never used it..
If you clone the IK open repo and edit the src/build.xml file then this target will build the mxt:
26 Posted by jdgxuser on 22 Jun, 2025 11:44 AM
First, thank you for all of the info and the responses.
I think you hit on something I did not realize until now. I thought I HAD to use gradle to compile the .java code correctly to create the MXT. If you do not use gradle, then what is the correct procedure you use to compile the .java code and create the .class and .mxt files?
Frankly, I am not a big fan of gradle, and in general prefer just to use javac.
27 Posted by Stuart Beesley ... on 22 Jun, 2025 01:01 PM
Some basics...
The MD .mxt file is simply a standard .jar file that's been renamed.
A good way to create a .jar file is to use java's jar command
However, a .jar file is really just a zip file with a different name..
I'm not saying you can't use Gradle... I'm saying that I have never used Gradle.
The current IK open repo uses Apache's
anttask to compile the code and build the mxt file.. Have you looked at the IK repo and the ./src/build.xml file? This will show you how the ant script works.. I already gave you the ant target to insert above.I do know IK want to move extensions to Gradle, but that has not been done yet. Others have done it... You will have to research how to do this, OR just clone the IK open rep and edit build.xml, add the lines I gave you and away you go.
As you don't like Gradle, just use ant and everything you need is already in place.
28 Posted by Stuart Beesley ... on 22 Jun, 2025 01:13 PM
you can email me if you like: ...
29 Posted by jdgxuser on 22 Jun, 2025 02:07 PM
Hi again Stuart, I think I am very close now. I DL'ed the IK build.xml added the <target> section for "propertyvalue" to it. I am receiving an error when I go to execute "ant propertyvalue". So, I am thinking that the build.xml is likely needing to be more heavily edited. Again I am attaching a tarball zip file for your review. I did take out the System.exit() and was able to rewrite the code using GSON instead of JSON JAR files.
If you could help me again on the build.xml, I think I am very close to being able to install this as an extension to Moneydance, then all I need do is starting modifying the code to create transactions and making it functional for pulling the property valuations into Moneydance.
30 Posted by Stuart Beesley ... on 22 Jun, 2025 03:09 PM
Your build.xml (which is the same as I gave you) works fine for me..
Why don't you tell me what error ant gave you?
Also run
ant -v propertyvalueand see what that says?My guess is that you have not set up the variable
md_ext_lib_dirand you can override this in a user.properties file - e.g.:or just change these two lines to the location of your jar files:
BUT, you seem to have ignored the Main.java file I uploaded. If you do not at least copy the core elements I inserted / changed for you then it will never actually load as an extension..