griffon/griffon — pull request #33 by mwangel (2014-11-26 20:38:10+00:00)
Title: Do not use File.separator to get resources from the classloader.

We use Java webstart to distribute a client application to near 2000 customers of a radio show distributor; the downloaders then further sub-distribute to even more stations. They are practically all on various Windows versions but the code works in certain Linux distributions and we also develop in Linux. We have been using Griffon 1 for this for some years and it is great but during the current upgrade to Griffon 2 there was a very strange problem running the code in Windows. The problem eventually came down to model/view/controller classes not being detected and loaded. There was no logging of the number of different Griffon artifact classes being loaded at all. In Linux it worked fine.

It turned out that the problem was that java.lang.Classloader.getResource only accepts '/' as separator and the griffon ServiceLoaderUtils.load method used File.separator - which of course is backslash in Windows. Now this took some looking to find but the code change is quite small and I actually think that it could have been fixed by not touching the incoming path at all since all calls that I found already had a slash at the end.

There are free official virtual machines of various Windows versions available on https://www.modern.ie/ for testing. We tested the code in this pull request by compiling griffon locally and forcing our version of griffon-core into a webstart distribution which we then ran in such a VM, so we feel sure that it at least works better than the File.separator version.

Thank you for your work on Griffon by the way, and for switching to Gradle.