Question

Je suis en train d'exécuter un code Java personnalisé grâce à la dernière version de JRuby (1.5.1), Ruby 1.8.7, avec Java 1.6.0_06. Je l'ai essayé à la fois le fichier de classe et de le mettre dans une méthode de pot. Lorsque je tente

require 'java'  
require 'path_to_class/myClass

ou

require 'java'  
require 'path_to_jar/a_jar.jar  

Essayer les deux méthodes, je ne peux pas accéder aux myClass, ni aucun autre fichier dans le fichier jar. D'autres variations sur le net pour l'import des classes java conduisent à l'erreur suivante:

`NameError: cannot load Java class com.package.myClass from C:/jruby-1.5.1/lib/ruby/site_ruby/shared/builtin/javasupport/java.rb:51:in method_missing`

J'ai également vérifié les solutions sur StackOverflow et je reçois toujours le même résultat. Je me demande si cela pourrait être un problème à un niveau plus profond.

Était-ce utile?

La solution

Au lieu de 'besoin', vous voulez 'java_import'.

require 'java'
java_import com.package.MyClass

Voir JRuby: import vs vs comprennent java_import vs include_class pour une discussion plus approfondie par exemple pourquoi vous devriez utiliser « java_import » au lieu de simplement « importer »

Autres conseils

Si vous avez un com.mypackage.MyClass de classe Java dans le même dossier ou dans un présent dossier sur le chemin de classe, vous pouvez l'appeler depuis votre script JRuby comme ceci:

require 'java'
import com.pack.MyClass

myClass = MyClass.new

Si la classe est dans un pot, vous devez require le pot:

require 'java'
require '/path/to/myjar.jar'
import com.pack.MyClass

myClass = MyClass.new

Si myjar.jar est sur le chemin de classe, vous pouvez simplement utiliser require 'myjar.jar'.

Avez-vous essayé include Java?

Voir ce pour plus de détails: http://blogs.oracle.com/coolstuff/entry / using_java_classes_in_jruby

Voici donc ce qui a fonctionné pour moi, j'avais tous les trucs nécessaires que les gens ont suggéré, mais ce que je avais vraiment besoin était

$CLASSPATH << (Rails.root.to_s + "/path/to/dotClassFolder")

avant l'instruction java_import

dans le système de fichiers, si votre classe était était dans le dossier

Rails.root/path/to/dotClassFolder/folder/anotherFolder/MyClass.class

Inclure $CLASSPATH << (Rails.root.to_s + "/path/to/dotClassFolder") puis java_import "folder.anotherFolder.MyClass"

Voir

.class section https://github.com / JRuby / JRuby / wiki / CallingJavaFromJRuby

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top