在 JRuby 中打开 JSON 文件在调用生成的 Java 类文件时会引发异常



我用jrubyc将Ruby编译成类文件。其中一个 Ruby 文件包含

dat = File.open "data.json", "r"

旁边还有一个"data.json"文件。如果我直接使用 jruby 命令,该程序运行良好。

编译 Ruby 文件并将它们放入 jar 后,运行 java -jar 时出现以下错误:

Exception in thread "main" org.jruby.exceptions.RaiseException: (Errno::ENOENT) data.json
at org.jruby.RubyFile.initialize(org/jruby/RubyFile.java:334)
at org.jruby.RubyIO.open(org/jruby/RubyIO.java:1144)
at RUBY.(root)(file:/Users/x5lai/Documents/rqrcode.jar!/read.rb:2)
...

为了确保我没有将 data.json 放在错误的位置,我将 data.json 复制到整个 jar 文件中,但发生了相同的错误。

有没有办法这样做?JRuby 编译代码后是否无法打开 JSON 文件?

我认为默认情况下它不会查看 JAR 内部。我创建了一个小测试,并能够重现您的问题。然后我做了touch data.json,代码不再有错误。我不确定如何指定您要在 JAR 中查找数据文件。

最新更新