Manually bootstrap JRuby after all.

After discussing this with @headius I've decided to do this the manual way
anyway. Apparently the basic load service stuff is deprecated and not very
reliable.
This commit is contained in:
Yorick Peterse 2014-05-07 22:32:34 +02:00
parent 90fabe3f21
commit fe74d60138
3 changed files with 18 additions and 38 deletions

14
ext/java/Liboga.java Normal file
View File

@ -0,0 +1,14 @@
package org.liboga;
import org.jruby.Ruby;
public class Liboga
{
/**
* Bootstraps the JRuby extension.
*/
public static void load(final Ruby runtime)
{
org.liboga.xml.Lexer.load(runtime);
}
}

View File

@ -1,31 +0,0 @@
import java.io.IOException;
import org.jruby.Ruby;
import org.jruby.RubyModule;
import org.jruby.RubyClass;
import org.jruby.runtime.load.BasicLibraryService;
import org.jruby.runtime.load.Library;
public class LibogaService implements BasicLibraryService
{
/**
* Bootstraps the JRuby extension.
*
* In order to load this extension properly you have to make sure that the
* lib/ directory is in the Ruby load path. If this is the case you can
* load it as following:
*
* require 'liboga'
*
* Using absolute paths (e.g. with `require_relative`) requires you to
* manually call this method:
*
* LibogaService.new.basicLoad(JRuby.runtime)
*/
public boolean basicLoad(final Ruby runtime) throws IOException
{
org.liboga.xml.Lexer.load(runtime);
return true;
}
}

View File

@ -6,14 +6,11 @@ require_relative 'oga/xml/lexer'
require_relative 'oga/xml/parser'
require_relative 'oga/xml/pull_parser'
# JRuby is dumb as a brick and can only load .jar files using require() when
# ./lib is in the LOAD_PATH. require_relative, or any other form that uses
# absolute paths, does not work.
unless $:.include?(File.expand_path('../', __FILE__))
$:.unshift(File.expand_path('../', __FILE__))
end
require_relative 'liboga'
require 'liboga'
if RUBY_PLATFORM == 'java'
org.liboga.Liboga.load(JRuby.runtime)
end
require_relative 'oga/xml/node'
require_relative 'oga/xml/element'