I tried
require ‘java’
include_class “java.io.IOException”
raise IOException,“test”,caller
It dose not work,any suggestion?Thanks a lot.
I tried
require ‘java’
include_class “java.io.IOException”
raise IOException,“test”,caller
It dose not work,any suggestion?Thanks a lot.
I had this problem a while ago, then it was because the ruby Kernel
module
doesnt like to raise java exceptions because they are not ruby
exceptions.
To get around it for what I was doing i patched Kernel and added a small
Java class to actually raise the exception.
I was only playing around testing Java with rspec however, so this may
well
not be the best way to do it in your situation.
At this time i spoke with charles about it on irc as I was looking
through
the jruby source to see how difficult it would be to resolve there, he
mentioned that there were thoughts of changing the exception model to be
more compatable between ruby & java, i am not sure whether this is still
on
the cards or not.
If anyone has found a better way of doing this, I would be interested in
hearing about it…
cheers
Simon
Note: this was done on jruby 1.1 from memory, still works on 1.1.2
however.
module Kernel
class << self
alias orig_raise raise
def raise *args
Java::rspecjava.extensions.kernel.RaiseJavaException.raise(args[0])
if
(args.length == 1 && args[0].respond_to?(:java_object))
orig_raise *args
end
end
end
package rspecjava.extensions.kernel;
public class RaiseJavaException
{
public static void raise(Throwable t) throws Throwable
{
throw t;
}
}
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.
Sponsor our Newsletter | Privacy Policy | Terms of Service | Remote Ruby Jobs