JRuby 9.4中import方法报NoMethodError问题求助
解决JRuby 9.4中
import方法未定义的问题 JRuby 9.x(包括9.4)重构了Java集成的API,全局import方法已被移除,这就是你遇到NoMethodError的原因。以下是三种可行的解决办法:
方案一:使用java_import替代全局import(推荐)
这是JRuby 9.x官方推荐的方式,替换后原有调用ManagementFactory的代码无需修改:
if RUBY_PLATFORM == 'java' require 'java' java_import java.lang.management.ManagementFactory current_heap_in_bytes = ManagementFactory.getMemoryMXBean.getHeapMemoryUsage.used # 其他业务代码 end
方案二:引入Java模块恢复import方法
如果希望保留原有import写法,可以在require 'java'后添加include Java,这样import方法会被引入当前作用域:
if RUBY_PLATFORM == 'java' require 'java' include Java import java.lang.management.ManagementFactory current_heap_in_bytes = ManagementFactory.getMemoryMXBean.getHeapMemoryUsage.used # 其他业务代码 end
方案三:直接使用全限定Java类名
不需要任何导入语句,直接通过Java::命名空间调用全限定类名,适合只使用少量Java类的场景:
if RUBY_PLATFORM == 'java' require 'java' current_heap_in_bytes = Java::JavaLangManagement::ManagementFactory.getMemoryMXBean.getHeapMemoryUsage.used # 其他业务代码 end
内容的提问来源于stack exchange,提问作者user1934428
相关产品推荐
相关产品推荐

