Closed yannisgu closed 10 years ago
More and more people are likely to run into this problem nowadays. Both 32/64 bits windows driver are embedded in the jar, but I guess the loader just pick the first one it finds without looking up the arch.
As a temporary workaround, I built a special 64 bits version of the latest 2.2 jar https://bitbucket.org/sdenier/geco/downloads
Thanks for the link to launch4j, although I prefer a universal jar across all platforms. Geco embeds JarClassLoader http://www.jdotsoft.com/JarClassLoader.php to load jar and native library, so I'm thinking of patching it so that it is a bit more intelligent with respect to the computer architecture. One friend already told me of such a patch.
Latest commit 9303161 is a proposed fix for this issue. Do you have mean the mean to test it? Or do you want to test a jar file?
Thx, I would prefer to test a jar, since my dev environment is too different than yours Windows/InteliJ and I didn't manage to create a release build ;)
OK, here is the latest jar https://dl.dropboxusercontent.com/u/9243197/geco-v2.2-15-g9303161.jar
Works like a charm, thank you!
When starting geco with 64-bit JVM on Windows, after finishing the wizard with "open" or "create new stage" no new window opens (but the process is running). Following error can be found in the error log:
java.lang.UnsatisfiedLinkError: C:\Users\Yannis\AppData\Local\Temp\JarClassLoader\32bits_rxtxSerial.dll.4895700372572862966.tmp: Can't load IA 32-bit .dll on a AMD 64-bit platform thrown while loading gnu.io.RXTXCommDriver java.lang.UnsatisfiedLinkError: C:\Users\Yannis\AppData\Local\Temp\JarClassLoader\32bits_rxtxSerial.dll.3793264677790620827.tmp: Can't load IA 32-bit .dll on a AMD 64-bit platform at java.lang.ClassLoader$NativeLibrary.load(Native Method) at java.lang.ClassLoader.loadLibrary0(Unknown Source) at java.lang.ClassLoader.loadLibrary(Unknown Source) at java.lang.Runtime.loadLibrary0(Unknown Source) at java.lang.System.loadLibrary(Unknown Source) at gnu.io.CommPortIdentifier.(CommPortIdentifier.java:123)
at net.geco.control.SIReaderHandler.listPorts(SIReaderHandler.java:201)
at net.geco.control.SIReaderHandler.refreshPorts(SIReaderHandler.java:195)
at net.geco.control.SIReaderHandler.changePortName(SIReaderHandler.java:175)
at net.geco.control.SIReaderHandler.(SIReaderHandler.java:94)
at net.geco.app.ClassicAppBuilder.buildControls(ClassicAppBuilder.java:100)
at net.geco.Geco.initControls(Geco.java:244)
at net.geco.Geco.startup(Geco.java:210)
at net.geco.Geco.main(Geco.java:127)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.jdotsoft.jarloader.JarClassLoader.invokeMain(JarClassLoader.java:697)
at net.geco.GecoLoader.main(GecoLoader.java:52)
Starting geco from command-line with 32-bit java solves the problem. For me it isn't an issue that Geco has to run with 32-bit JVM, but this should be described somewherer.
Maybe creating a launch4j wrapper arround geco would be the user friendlier solution.