【发布时间】: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();
}
}
【问题讨论】: