【问题标题】:Error when trying to load JRuby script尝试加载 JRuby 脚本时出错
【发布时间】:2011-07-29 22:53:10
【问题描述】:

在这里,我试图将我的 Jruby 脚本加载到我的 java 代码中,但出现了很长的错误,我真的不知道这意味着什么,

player.rb 文件与 TEST.java 位于同一文件夹中。

这是我得到的错误:

java.io.FileNotFoundException: .player.rb (The system cannot find the file specified)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:120)
at java.io.FileInputStream.<init>(FileInputStream.java:79)
at org.jruby.embed.internal.EmbedRubyRuntimeAdapterImpl.parse(EmbedRubyRuntimeAdapterImpl.java:117)
at org.jruby.embed.ScriptingContainer.parse(ScriptingContainer.java:1195)
at org.jruby.embed.ScriptingContainer.runScriptlet(ScriptingContainer.java:1275)
at test.TEST.<init>(TEST.java:29)
at test.TEST.main(TEST.java:33)
Exception in thread "main" org.jruby.embed.ParseFailedException: java.io.FileNotFoundException: .player.rb (The system cannot find the file specified)
at org.jruby.embed.internal.EmbedRubyRuntimeAdapterImpl.parse(EmbedRubyRuntimeAdapterImpl.java:143)
at org.jruby.embed.ScriptingContainer.parse(ScriptingContainer.java:1195)
at org.jruby.embed.ScriptingContainer.runScriptlet(ScriptingContainer.java:1275)
at test.TEST.<init>(TEST.java:29)
at test.TEST.main(TEST.java:33)
Caused by: java.io.FileNotFoundException: .player.rb (The system cannot find the file specified)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:120)
at java.io.FileInputStream.<init>(FileInputStream.java:79)
at org.jruby.embed.internal.EmbedRubyRuntimeAdapterImpl.parse(EmbedRubyRuntimeAdapterImpl.java:117)
... 4 more

Java 结果:1

这是我的 Java 代码:

import org.jruby.*; 
import java.util.ArrayList;
import java.util.List;
import org.jruby.embed.PathType;
import org.jruby.embed.ScriptingContainer;

public class TEST {
    private final static String jrubyhome = "C:/jruby-1.6.3";
    private final String filename = "player.rb";

    private TEST() {
        ScriptingContainer container = new ScriptingContainer();
        List<String> loadPaths = new ArrayList();
        loadPaths.add(jrubyhome);
        // JRuby 1.5.x
        container.setLoadPaths(loadPaths);
        // JRuby 1.4.0
        //container.getProvider().setLoadPaths(loadPaths);
        container.runScriptlet(PathType.ABSOLUTE, filename);
    }

    public static void main(String[] args) {
        new TEST();
    }
}

这是我的 Ruby 代码:

def numberMethod
  number = 3
return number
end

puts numberMethod
puts "Test, test!"

我现在得到的新错误:

java.io.FileNotFoundException: C:\Users\Oskar\Documents\NetBeansProjects\TEST\src\test(访问被拒绝) 在 java.io.FileInputStream.open(本机方法) 在 java.io.FileInputStream.(FileInputStream.java:120) 在 java.io.FileInputStream.(FileInputStream.java:79) 在 org.jruby.embed.internal.EmbedRubyRuntimeAdapterImpl.parse(EmbedRubyRuntimeAdapterImpl.java:117) 在 org.jruby.embed.ScriptingContainer.parse(ScriptingContainer.java:1195) 在 org.jruby.embed.ScriptingContainer.runScriptlet(ScriptingContainer.java:1275) 在 test.TEST.(TEST.java:29) 在 test.TEST.main(TEST.java:33) 线程“主”org.jruby.embed.ParseFailedException 中的异常:java.io.FileNotFoundException:C:\Users\Oskar\Documents\NetBeansProjects\TEST\src\test(访问被拒绝) 在 org.jruby.embed.internal.EmbedRubyRuntimeAdapterImpl.parse(EmbedRubyRuntimeAdapterImpl.java:143) 在 org.jruby.embed.ScriptingContainer.parse(ScriptingContainer.java:1195) 在 org.jruby.embed.ScriptingContainer.runScriptlet(ScriptingContainer.java:1275) 在 test.TEST.(TEST.java:29) 在 test.TEST.main(TEST.java:33) 引起:java.io.FileNotFoundException: C:\Users\Oskar\Documents\NetBeansProjects\TEST\src\test(访问被拒绝) 在 java.io.FileInputStream.open(本机方法) 在 java.io.FileInputStream.(FileInputStream.java:120) 在 java.io.FileInputStream.(FileInputStream.java:79) 在 org.jruby.embed.internal.EmbedRubyRuntimeAdapterImpl.parse(EmbedRubyRuntimeAdapterImpl.java:117) ... 4 更多 Java 结果:1

新的java代码:

    import org.jruby.*; 
import java.util.ArrayList;
import java.util.List;
import org.jruby.embed.PathType;
import org.jruby.embed.ScriptingContainer;

public class TEST {
    private final static String jrubyhome = "C:/jruby-1.6.3";
    private final String filename = "C:/Users/Oskar/Documents/NetBeansProjects/TEST/src/test/player.rb";

    private TEST() {
        ScriptingContainer container = new ScriptingContainer();
        List<String> loadPaths = new ArrayList();
        loadPaths.add(jrubyhome);
        // JRuby 1.5.x
        container.setLoadPaths(loadPaths);
        // JRuby 1.4.0
        //container.getProvider().setLoadPaths(loadPaths);
        container.runScriptlet(PathType.RELATIVE, filename);
    }

    public static void main(String[] args) {
        new TEST();
    }
}

【问题讨论】:

    标签: java class methods jruby


    【解决方案1】:

    我猜PathType.ABSOLUTE 常量是罪魁祸首。更改它(例如更改为 PathType.RELATIVE)或提供您的 test.rb 文件的完整路径。

    【讨论】:

    • 您尝试了哪种解决方案?你如何运行你的程序?
    • 那么,尝试粘贴至少重要部分的新错误。
    • 好吧,我将粘贴新错误,但不会在评论中粘贴,因为它太少了,无法在评论中发布。它将在底部。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-30
    • 2016-08-29
    • 1970-01-01
    • 2013-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多