Ошибка при попытке загрузить скрипт JRuby - PullRequest
1 голос
/ 30 июля 2011

Здесь я пытаюсь загрузить свой 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.java:29) at test.TEST.main (TEST.java:33) Исключение в потоке "main" 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.java:29) at 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();
    }
}

1 Ответ

0 голосов
/ 30 июля 2011

Я думаю, что постоянная PathType.ABSOLUTE является виновником. Измените это (например, на PathType.RELATIVE) или укажите полный путь к файлу test.rb.

...