Bug #5030
openRExpression2 actor will fail if the libs are not found
0%
Description
Creating a new bug from discussion originating in bug#4985, relevant sections posted below:
Jianwu said:
I also tried workflows in Kepler-2.0.0-Demos\demos\R\r-2.0.0\demos\JRI
directory, the whole Kepler just quit with the following message in the
console. It makes sense that the dll doesn't work for 64 bit machine. But just
quitting Kepler is too unfriendly.
[null] Cannot find JRI native library!
[null] Please make sure that the JRI native library is in a directory
liste
d in java.library.path.
[null]
[null] java.lang.UnsatisfiedLinkError: C:\Program
Files\Kepler-2.0-RC2\r-2.
0.0\lib\jri.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform
[null] at java.lang.ClassLoader$NativeLibrary.load(Native Method)
[null] at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1753)
[null] at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1678)
[null] at java.lang.Runtime.loadLibrary0(Runtime.java:822)
[null] at java.lang.System.loadLibrary(System.java:993)
[null] at org.rosuda.JRI.Rengine.<clinit>(Rengine.java:19)
[null] at
org.ecoinformatics.seek.R.RExpression2._initializeRengine(REx
pression2.java:569)
[null] at
org.ecoinformatics.seek.R.RExpression2._fireUsingJRI(RExpress
ion2.java:547)
[null] at
org.ecoinformatics.seek.R.RExpression2.fire(RExpression2.java
:289)
[null] at ptolemy.actor.AtomicActor.iterate(AtomicActor.java:469)
[null] at
ptolemy.actor.sched.StaticSchedulingDirector.fire(StaticSched
ulingDirector.java:188)
[null] at ptolemy.actor.CompositeActor.fire(CompositeActor.java:458)
[null] at ptolemy.actor.Manager.iterate(Manager.java:749)
[null] at ptolemy.actor.Manager.execute(Manager.java:351)
[null] at ptolemy.actor.Manager.run(Manager.java:1162)
[null] at ptolemy.actor.Manager$3.run(Manager.java:1215)
Exception in thread "main" Java returned: 1
at org.kepler.build.modules.ModulesTask.execute(ModulesTask.java:105)
at org.kepler.build.runner.Kepler.main(Kepler.java:78)
Caused by: Java returned: 1
at org.apache.tools.ant.taskdefs.Java.execute(Java.java:108)
at org.kepler.build.Run.runSuite(Run.java:298)
at org.kepler.build.Run.run(Run.java:202)
at org.kepler.build.modules.ModulesTask.execute(ModulesTask.java:101)
... 1 more
--- Nested Exception ---
Java returned: 1
at org.apache.tools.ant.taskdefs.Java.execute(Java.java:108)
at org.kepler.build.Run.runSuite(Run.java:298)
at org.kepler.build.Run.run(Run.java:202)
at org.kepler.build.modules.ModulesTask.execute(ModulesTask.java:101)
at org.kepler.build.runner.Kepler.main(Kepler.java:78)
and Ben responded:
2. The RExpression2 (JRI-based) actor will fail if the libs are not found. This
is probably deep in the JRI.jar library when it cannot load the correct native
lib for the platform. We could probably try to detect the 32 v. 64 bitness of
the system and prevent the actor from attempting to use JRI if it was on a 64
bit machine - otherwise it will be the hard failure (system.exit)
and Jianwu:
Matlab actors also have 32 and 64 bit issue when using JNI libraries to
communicate with Matlab. It will pop up an exception message when the JNI lib
doesn't work with the system. You can find some information at
https://kepler-project.org/developers/teams/build/matlab-lib-build-instructions-in-kepler-for-matlab-actor.
It may help this bug.
Updated by ben leinfelder over 14 years ago
I've tried to run/install JRI on a 64 bit windows machine.
The JRI examples that they ship seem to work and I can get as far as loading the native 64 bit JRI library and compatible jar in Kepler, but then java crashes as the REngine initializes. I'm not sure what's breaking down at this point.
I'm not going to try much harder on this tack because we're not officially committed to the JRI implementation.