(Prémisse) JRuby peut être utilisé ・ java peut être compilé
JavaCallTest.java
)JavaCallTest.java
et préparez JavaCallTest.class
require'java '; java_import'JavaCallTest'
Voici un exemple spécifique.
JavaCallTest.java
public class JavaCallTest{
public static String str1(){
return "str1";
}
public String str2() {
return "str2";
}
}
java_call_test.rb
require 'java'
java_import 'JavaCallTest'
p JavaCallTest.str1
begin
jct1 = JavaCallTest.new
jct1.str1
rescue => e
puts e.class
puts e.message
puts e.backtrace
end
jct2 = JavaCallTest.new
p jct2.str2
begin
p JavaCallTest.str2
rescue => e
puts e.class
puts e.message
puts e.backtrace
end
$ jruby CallJava1.rb
"str1"
NoMethodError
undefined method `str1' for #<Java::Default::JavaCallTest:0x553a3d88>
Did you mean? str2
CallJava1.rb:7:in `<main>'
"str2"
NoMethodError
undefined method `str2' for Java::Default::JavaCallTest:Class
Did you mean? str1
org/jruby/RubyBasicObject.java:1657:in `method_missing'
CallJava1.rb:17:in `<main>'
Il semble que les noms correspondent comme suit
--Java static sod est une méthode de classe Ruby --Java non-static sod est une méthode d'instance Ruby
C'était difficile car ma connaissance de Java était de 0
Recommended Posts