JRuby新手使用Warbler编译Jar报错:NoMethodError: undefined method `exists?' for File:Class
解决Warbler运行报错:undefined method `exists?' for File:Class
问题原因
你使用的Warbler 2.0.5版本过于老旧,它调用的File.exists?方法在Ruby 3.2中已被移除——Ruby 3.0及以后版本统一使用File.exist?(注意少一个s),这就是触发报错的核心原因。
解决方案
升级Warbler到兼容版本
直接安装支持Ruby 3.x的Warbler版本,执行以下命令:gem install warbler --version ">= 2.1.0"Warbler 2.1.0及后续版本已修复该API兼容问题,升级后即可正常运行各类Warbler命令。
临时修复旧版Warbler(不推荐)
如果暂时无法升级,找到报错文件:C:/Ruby32-x64/lib/ruby/gems/3.2.0/gems/warbler-2.0.5/lib/warbler/task.rb,打开后定位到第45行,将File.exists?替换为File.exist?,保存后重新运行Warbler命令即可。匹配JRuby版本
额外注意:你当前使用Ruby 3.2,JRuby建议选用支持Ruby 3.2的版本(比如JRuby 9.4及以上),避免版本不兼容引发其他问题。
内容的提问来源于stack exchange,提问作者Ethan_
相关产品推荐
相关产品推荐

