Platform.getPackageName() NPE when embedded.
--------------------------------------------
Key: JRUBY-6024
URL: https://jira.codehaus.org/browse/JRUBY-6024
Project: JRuby
Issue Type: Bug
Affects Versions: JRuby 1.6.4
Environment: notes from me:
* I am unsure of the constantine/constants etc actually included w/ JR 1.6.5.
Reporter: Miroslav Pokorny
Assignee: Thomas E Enebo
*AFFECTED VERSION*
Before i get started, i am actually complaining about 1.6.5 (five) which is
officially available from jruby.org but Affected versions only goes up to 1.6.4
*REAL DESCRIPTION*
I am getting a NPE using an embedded JRuby which is loaded from a non system
ClassLoader.
The stack trace below demonstrates the problem (note i have kept the
interesting frames).
java.lang.NullPointerException
at com.kenai.constantine.Platform.getPackageName(Platform.java:39)
at com.kenai.constantine.ConstantSet.getEnumClass(ConstantSet.java:84)
at com.kenai.constantine.ConstantSet.getConstantSet(ConstantSet.java:60)
at
com.kenai.constantine.platform.ConstantResolver.getConstants(ConstantResolver.java:181)
at
com.kenai.constantine.platform.ConstantResolver.getConstant(ConstantResolver.java:102)
at
com.kenai.constantine.platform.ConstantResolver.intValue(ConstantResolver.java:146)
at com.kenai.constantine.platform.OpenFlags.value(OpenFlags.java:28)
at org.jruby.RubyFile.createFileClass(RubyFile.java:265)
at org.jruby.Ruby.initCore(Ruby.java:1269)
at org.jruby.Ruby.bootstrap(Ruby.java:1099)
at org.jruby.Ruby.init(Ruby.java:1071)
at org.jruby.Ruby.newInstance(Ruby.java:186)
at
org.jruby.embed.internal.LocalContext.getThreadSafeRuntime(LocalContext.java:69)
at
org.jruby.embed.internal.ThreadSafeLocalContextProvider.getRuntime(ThreadSafeLocalContextProvider.java:61)
at
org.jruby.embed.ScriptingContainer.terminate(ScriptingContainer.java:1721)
Sorry i cannot comment on the Constantine that is actually used as
jruby-complete.jar does not include C source. Note being uninformed i could not
easily determine which version of C is actually bundled.
My guess is that java.lang.Package.getPackage(String) returns null because the
class is not coming from the System ClassLoader.
The easy fix was to grab a *fixed* C from
https://github.com/jnr/jnr-constants.
after which everything just works.
This was previously discussed at http://www.ruby-forum.com/topic/2321320.
Thanks Wayne for the fix and everyone else for JR.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email