Appeler Java depuis JRuby

Contexte

manière

(Prémisse) JRuby peut être utilisé ・ java peut être compilé

  1. Écrivez du code Java (nommons le fichier JavaCallTest.java)
  2. Compilez JavaCallTest.java et préparez JavaCallTest.class
  3. Dans JRuby require'java '; java_import'JavaCallTest'
  4. Appelez en conséquence

Voici un exemple spécifique.

Code Java

JavaCallTest.java


public class JavaCallTest{
    public static String str1(){
        return "str1";
    }

    public String str2() {
        return "str2";
    }
}

Code JRuby

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

résultat

$ 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>'

commentaire

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

Appeler Java depuis JRuby
Appeler la classe scellée de Kotlin depuis Java
Appelez l'API Java de TensorFlow depuis Scala
Implémentez l'interface Java dans la classe JRuby et appelez-la depuis Java
Appeler la bibliothèque Java à partir de C avec JNI
Appeler l'API GitHub à partir de l'API Socket de Java, partie 2
Appel de méthodes Java à partir de JavaScript exécutées en Java
[Android] Appeler la méthode d'argument par défaut de Kotlin depuis Java
Changements de Java 8 à Java 11
Somme de Java_1 à 100
Appel de méthode Java depuis RPG (appel de méthode dans sa propre classe)
Évaluer la source Java à partir de Java
Accédez à API.AI depuis Java
De Java à Ruby !!
Utilisez TensorFlow de JRuby
Traitement des appels du constructeur JAVA
Appeler une méthode avec le bloc de rappel de Kotlin depuis Java
Appeler un programme écrit en Swift depuis Processing (Java)
Migration de Cobol vers JAVA
Java à partir du débutant, remplacer
Création d'index Elastic Search à partir de Java
Nouvelles fonctionnalités de Java7 à Java8
Connectez-vous de Java à PostgreSQL
Java, instance à partir du débutant
Java à partir de débutant, héritage
La vie Java à partir de zéro
Utilisation de Docker depuis Java Gradle
De Java inefficace à Java efficace
JavaScript vu de Java
Exécuter des instructions non-Java à partir de Java
[Kotlin] Obtenez le constructeur / la méthode Java de KFunction et appelez-le
Chaîne d'appels depuis la chaîne dans l'intégration Spring
Java, classe abstraite pour commencer par débutant
Coder Java depuis Emacs avec Eclim
Deep Learning Java from scratch 6.4 Régularisation
Obtenir le pays à partir de l'adresse IP (Java)
Exécutez node.js depuis Android Java (traitement)
Exécuter le fichier de commandes à partir de Java
[Java] Supprimer les espaces dans les chaînes de caractères
Procédure de préparation pratique d'Akka à partir de Java
Accéder à Teradata depuis une application Java
Utiliser Chrome Headless de Selenium / Java
Java sera impliqué dès aujourd'hui
Java
De Java à VB.NET - Écriture de notes de contraste
Java, constructeur de surcharge à partir du débutant
Travailler avec des feuilles de calcul Google à partir de Java
Java, interface pour partir du débutant
Java
La route de JavaScript à Java
Réintroduction de Java8, disponible depuis Android Studio 2.4
[Java] Conversion d'un tableau à une liste
Appeler les fonctions du langage C depuis Swift
Exemple de code utilisant Minio de Java
Appeler Spring Management Bean de Pojo
Appelez la super méthode en Java
[Android / Java] Faire en sorte que le fragment hôte (appelant) rappelle l'événement depuis DialogFragment
Appelez l'API Microsoft Emotion en envoyant des données d'image directement depuis Java.
Étudiez le Deep Learning à partir de zéro en Java.