Hello!
I have a jruby application that requires a jar file
(netcdfAll-4.3.jar). This jar depends on another jar
(joda-time-2.1.jar). Although Im able to access netcdf classes in
jruby, when a netcdf class tries to access one of the classes in
joda-time, the application fails with:
NativeException: java.lang.NoSuchMethodError:
org.joda.time.format.DateTimeFormatter.withZoneUTC()Lorg/joda/time/format/DateTimeFormatter;
Im even able to access DateTimeFormatter from my jruby code without
problem. The error only occurs if the netcdf class tries to access
the joda class.
How can I load those classes and make them available to all jars?
Thanks
–
Rodrigo B.
Hi Rodrigo copy this jar to java jre that your jruby uses to run it’s
the easy solution for me…
on Ubuntu…and Java 6
/usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/ext
Regards
in case you use jruby-complete.jar then try to get the joda jar first
into classloader. the problem is the packed joda within jruby which
apparently has a different version the joda-2.1
regards,
Kristian
On Fri, Jul 27, 2012 at 2:55 AM, Manuel R. Caro
Kristian,
Sorry to ask, but how do I do that? Is there a way to remove the jruby
joda package?
Thanks,
On Thu, Jul 26, 2012 at 11:05 PM, kristian [email protected] wrote:
easy solution for me…
Hello!
http://xircles.codehaus.org/manage_email
–
Rodrigo B.
hi,
well, the best would be to fix the jruby-core jar:
http://jira.codehaus.org/browse/JRUBY-5848
this comes without joda or any other embedded jar (yaml). so with such
a clean classloader you are on the safe side unless you use gems with
“vendored” jars like jruby-openssl, nokogiri-java, etc.
maybe your environment allows it to prepend something to the
boot-classloader which came handy for me to enforce my versions of
Xerces, Xalan and Bouncy-Castle jars on the system (oracle application
server).
if you experience such situation with a webcontainer then you can
reverse the lookup sequence of the web-classloader to first look
inside itself before going to the parent classloader. not sure (never
saw it) if that can be done for ear-file-containers (and not sure if
ruby scripting reached ejb already :))
another way is to call jruby like
$ java -cp joda.jar:jruby-complete.jar org.jruby.Main
that should do the trick as well.
within a maven project just make sure your joda artifact is declared
BEFORE the jruby-complete artifact.
maybe for jruby commandline there is a way to “prepend” jars.
quite possible that the putting the joda in the ext directory works as
well.
so there are some workarounds but I have a look on the weekend what is
missing for jruby-core jar to work properly - that would be a great
first step to offer a way for a clean classloader setup.
regards,
Kristian
On Fri, Jul 27, 2012 at 7:01 PM, Rodrigo B.
Kristian,
Thanks for the reply… but it was way over my current abilities. I
tried the – $ java -cp joda.jar:jruby-complete.jar org.jruby.Main –
but got a cannot load org.jruby.Main error, although jruby works fine.
Im working on cygwin, so maybe I can fix the classloader, but then I
really have no idea how to do that!
Do you have any simpler workaround? I used to be a good java
programmer – when java was in beta stage (and sadly this is not a
joke!).
Thanks for your help,
Rodrigo
On Fri, Jul 27, 2012 at 3:27 PM, kristian [email protected] wrote:
boot-classloader which came handy for me to enforce my versions of
apparently has a different version the joda-2.1
(netcdfAll-4.3.jar). This jar depends on another jar
the joda class.
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email
–
Rodrigo B.
Thanks for your help… got a solution!!!
jruby -J-Xbootclasspath/a:<joda_time_dir>\joda-time-2.1.jar netcdf.rb
Rodrigo
On Fri, Jul 27, 2012 at 4:22 PM, kristian [email protected] wrote:
Kristian
On Fri, Jul 27, 2012 at 3:27 PM, kristian [email protected] wrote:
boot-classloader which came handy for me to enforce my versions of
apparently has a different version the joda-2.1
(netcdfAll-4.3.jar). This jar depends on another jar
the joda class.
–
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email
–
Rodrigo B.
Integrando TI ao seu negcio
21-3010-4802/11-3010-1802
try
java -Djava.ext.dirs=joda-time -jar jruby-complete-1.6.7.2.jar
where the directory joda-time contains the joda-jar. but I do not know
how to test it myself.
indeed the -cp version did not work - sorry did not try it out before
writing
regards,
Kristian
On Fri, Jul 27, 2012 at 8:18 PM, Rodrigo B.