Как мне на самом деле запустить Rhino? - PullRequest
3 голосов
/ 19 апреля 2011

Я прочитал документы здесь: Mozilla 'Scripting Java'

Эти примеры также не отвечают на мой вопрос: Пример Rhino Liveconnect

Как мои файлы javascript знают, где найти, например, "java.lang"? Конечно, это работает внутри оболочки Rhino, но мне нужно запускать код Java внутри моих файлов JavaScript, а не из оболочки. Я могу видеть только файлы .java в загруженном источнике.

Я хочу вызывать java-методы на стороне сервера в моем javascript-файле nodejs-сервера. Разве Rhino как-то не нужно запускать, чтобы предоставить моему javascript возможность понимать java?

Изменить: @eee Так что, если я правильно понимаю, Rhino на самом деле не позволяет мне запускать java из javascript, он просто переводит весь мой javascript в файлы java .class ... которые я все-таки должен выполнить внутри файла java? Такой вид побеждает цель вызова Java из JavaScript. Вся идея в том, чтобы иметь возможность вызывать любой код Java из моего кода JavaScript без необходимости создавать новые библиотеки Java.

Разве это не значит, что я не могу использовать Rhino? Nodejs использует движок V8 для выполнения javascript, поэтому я предполагаю, что один и тот же javascript-файл не может использоваться как V8, так и Rhino ... Я надеялся, что смогу вызвать java-методы, которые запустят Rhino, который переведет эти вызовы на Яву. Сама Java тогда возвращала бы переменные filles с некоторыми данными.

@ Питер: почему http звонит? На данный момент и мой javascript, и мой java лежат на одном сервере. Во всяком случае, то, что вы говорите, не требует Rhino, не так ли? Я создал бы кучу файлов .class, а затем вызвал бы 'java myfile.class -v "firstvar" -x "secondvar"' .. я правильно вас понимаю?

1 Ответ

3 голосов
/ 17 июня 2011

Rhino действительно позволяет мне запускать Java из сценариев JavaScript.Там не так много, чтобы сделать.LiveConnect дает вам доступ ко всему в пакете java. *.Если вы хотите, чтобы ваш собственный код был доступен, вам просто нужно добавить свой класс (скомпилированный код Java) в путь к классам приложения.

Я хочу вызывать методы java-сервера на стороне сервера в моем javascript serverj1006 *

Rhino - это интерпретатор JavaScript, то есть запускает код JavaScript.V8 - это JavaScript-интерпретатор NodeJS.Вы должны выбрать либо Rhino или V8.V8 находится на C ++ и глубоко встроен в NodeJS.Rhino находится на Java и не может легко заменить V8.Существуют проекты (долгосрочные) для переноса NodeJS на Rhino, но не ждите этого, пока не будете готовы принять участие.

...