Andrew, Thanks for your reply. I don't have a stack trace, but I have determined that the problem originates from ResourceBundle.tryBundle(String, ClassLoader) which returns null instead of locating resources within glibj.zip. Due to that various exceptions are thrown later (e.g. date, number, and currency formats are messed up). tryBundle first tries to load LocaleInformation_foo as a class. That must fail because glibj.zip contains .properties files for locale information, not classes. Then tryBundle tries to find the corresponding .property file, but it is not found & then tryBundle returns null. As a workaround, I have found tryBundle can find the locale information by (1) unpacking the resources directory from glibj.zip into, say, /tmp, and (2) calling JamVM with -Xbootclasspath/p:/tmp . (I unpacked all of the resources directory; there are other resources aside from locale information which need to be located, otherwise exceptions are thrown.) So it appears that the problem is related to locating properties files (maybe all non-class files? dunno) within glibj.zip. Incidentally the glibj.zip I am using was created by unpacking glibj.zip as created by make, erasing the swing directories, and repacking glibj.zip via fastjar, the same program used by make to create the original. I am working on a device with limited memory, and saving the 1 M or so which swing occupies is important. Yes, I did set --without-x and disabled various graphics related options in classpath.mk. Thanks for any information anyone has about this problem. Robert Dodier