【问题标题】:Opening JSON file in JRuby throws exception when evoking the Java class files generated在调用生成的 Java 类文件时,在 JRuby 中打开 JSON 文件会引发异常
【发布时间】:2013-11-09 08:20:07
【问题描述】:

我使用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 文件?

【问题讨论】:

    标签: ruby json jar jruby jvm-languages


    【解决方案1】:

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

    【讨论】:

    • touch data.json 不是 JRuby 方法...但是您说的一件事是正确的,默认情况下它不会查看 JAR 内部。我将 data.json 放在 JAR 文件中,它运行良好。谢谢!
    • 我为造成的混乱道歉,我的意思是我在命令行上运行了touch data.jsontouch 创建一个具有给定名称的空文件。很高兴你明白了!
    猜你喜欢
    • 2014-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 2015-06-25
    • 1970-01-01
    相关资源
    最近更新 更多