I am running the sample code straight out of Ruby Developer's Guide,
which shows an example of how Java can call a Ruby interpreter to run
a Ruby script.  The code is found on pp.505-506.  After downloading
JRuby-0.5.0, however, I get the following exeception:

% java Java2Ruby
Warning: Cannot convert string "<Key>Escape,_Key_Cancel" to type
VirtualBinding
Warning: Cannot convert string "<Key>Home,_Key_Begin" to type
VirtualBinding
Warning: Cannot convert string "<Key>F1,_Key_Help" to type
VirtualBinding
Warning: Cannot convert string "Shift<Key>F10,_Key_Menu" to type
VirtualBinding
Warning: Cannot convert string "<Key>F10,Shift_Key_Menu" to type
VirtualBinding
Warning: Cannot convert string "<Key>KP_Enter,_Key_Execute" to type
VirtualBinding
Warning: Cannot convert string "Alt<Key>Return,Alt_Key_KP_Enter" to
type VirtualBinding
Exception in thread "main" java.lang.ClassCastException:
org.jruby.RubyRange
        at org.jruby.javasupport.JavaUtil.convertRubyToJava(JavaUtil.java:163)
        at org.jruby.Ruby.evalScript(Ruby.java:203)
        at Java2Ruby.main(Java2Ruby.java:33)


Has something changed in JRuby since the book was published?  Is there
a now a different way to invoke the Ruby interpreter from KJava?

Below is the source code.  Any help would be appreciated.  Thanks,



import javax.swing.*;
import java.awt.BorderLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import org.jruby.*;
import org.jruby.regexp.*;
import org.jruby.javasupport.*;

public class Java2Ruby {

        public static void main(String[] argv) {

                JFrame frame = new JFrame ("Java loves Ruby");
                JLabel label = new JLabel ("Cats have 9 lives");
                JButton button = new JButton ("Press me");

                Ruby ruby = Ruby.getDefaultInstance
(GNURegexpAdapter.class);

                button.addActionListener (new ActionListener() {

                        public void actionPerformed(ActionEvent e) {

                                JOptionPane.showMessageDialog (null,
                                        "Hello from Java\n Responding
button:" +
                                        e.getActionCommand ());
                        }
                });

                String rubySource = "listContents = []\n" +
                        "(1..9).each { |x| listContents << " +
                        "(\"cat number \" + x.to_s)}\n";

                String[] listContents = (String[]) ruby.evalScript
(rubySource,
                        String[].class);

                JList list = new JList (listContents);

                frame.getContentPane ().add (button,
BorderLayout.SOUTH);
                frame.getContentPane ().add (list,
BorderLayout.CENTER);
                frame.getContentPane ().add (label,
BorderLayout.NORTH);
                frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);

                frame.pack ();
                frame.setVisible (true);
        }
}