我正在尝试在 JRuby 中使用自定义 ClassLoader,因此我的 gem 加载的类不会与任何需要我的 gem 的项目冲突。
为此,我可以很容易地创建一个新的URLClassLoader
并调用loadClass
来加载我的类,但我得到的是一个未包装的 Java Class
,我似乎不能轻松地做很多事情。
我希望能够做这样的事情:
clazz = java_class_loader.loadClass 'org.foo.bar.Class'
wrapped = JRuby.wrap_class clazz
wrapped.static_method 1, 2, 3 # call a static method
wrapped::CONSTANT # get a constant
有任何想法吗?我已经在 JRuby 源代码中查看了一个好的端点,并且我已经尝试了 JavaSupport 中的许多方法,get_proxy_class
或者同样没有好的效果。我可以从我的班级获得和实例,JavaClass
但这似乎对我没有多大好处。