Разрешение модулей с помощью require.js и Java / носорог

я пытаюсь получить требование.js для загрузки модулей на стороне сервера с Java 6 и Rhino.

я могу загрузить require.сам js в порядке. Носорог может видеть . Я могу сказать, потому что носорог жалуется, что он не может найти функцию, когда я меняю require() к чему-то еще вроде requireffdkj().

но когда я пытаюсь потребовать даже простой JS, как hello.js

var hello = 'hello';

используя любое из следующего:

require('hello');
require('./hello');

это не работает. Я получаю

Caused by: javax.script.ScriptException: sun.org.mozilla.javascript.internal.JavaScriptException: [object Error] (<Unknown source>#31) in <Unknown source> at line number 31
    at com.sun.script.javascript.RhinoScriptEngine.eval(RhinoScriptEngine.java:153)
    at com.sun.script.javascript.RhinoScriptEngine.eval(RhinoScriptEngine.java:167)
    at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:247)

у меня hello.js в верхней части пути к классам Java. Вот где у меня require.js как хорошо. Я пытался двигаться!--7--> везде, где я мог бы подумать, что это может пойти, включая корень моего жесткого диска, корень моего каталога пользователя, каталог, из которого я запускаю свое Java-приложение и т. д. Ничего не работает.

я посмотрел на CommonJS спек (http://wiki.commonjs.org/wiki/Modules/1.0) и он говорит, что топ-уровня Идс (как hello) разрешаются из "корня пространства имен концептуального модуля", тогда как относительные идентификаторы (например,./hello) разрешены против вызывающего модуля. Я не уверен, где находится любая из этих исходных линий, и я подозреваю, что это проблема.

какие предложения? Могу ли я даже использовать require.JS из Рино?

EDIT: думая, что мне нужно настроить среду в соответствии с предложением Pointy в комментарии ниже, я попытался оценить r.js как хорошо. (Я попытался оценить после оценки require.js, а потом снова перед require.js.) В любом случае я получаю сообщение об ошибке:

Caused by: javax.script.ScriptException: sun.org.mozilla.javascript.internal.EcmaError: ReferenceError: "arguments" is not defined. (<Unknown source>#19) in <Unknown source> at line number 19
    at com.sun.script.javascript.RhinoScriptEngine.eval(RhinoScriptEngine.java:153)
    at com.sun.script.javascript.RhinoScriptEngine.eval(RhinoScriptEngine.java:167)
    at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:247)

"аргументы", по-видимому, являются переменной в r.js. Я думаю, что это для аргументов командной строки, поэтому я не думаю r.js - это правильный путь для того, что я пытаюсь сделать. Хотя не уверен.

1 ответов


требуют.js хорошо работает с rhino. Недавно я использовал его в одном проекте.

  1. вы должны обязательно использовать Р.Яш (не требуют.js), модифицированная версия require.JS для носорога.
  2. вы должны продлить ScritableObject класс для реализации load и