Скажем, у меня есть какой-то javascript, который при запуске в браузере будет напечатан так ...
<script type = "text/javascript"
src = "http://someplace.net/stuff.ashx"></script>
<script type = "text/javascript">
var stuff = null;
stuff = new TheStuff('myStuff');
</script>
... и я хочу использовать пакет javax.script в java 1.6, чтобы запустить этот код в jvm (не внутри апплета) и получить материал. Как сообщить движку, что источник создаваемых классов находится в удаленном файле .ashx?
Например, я знаю, что код java нужно писать как ...
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("JavaScript");
engine.eval( "stuff = new TheStuff('myStuff');" );
Object obj = engine.get("stuff");
... но движок "JavaScript" по умолчанию ничего не знает о классе TheStuff, потому что эта информация находится в удаленном файле .ashx. Могу ли я сделать так, чтобы он посмотрел на указанную выше строку src для этого?




Похоже, вы спрашиваете:
How can I get
ScriptEngineto evaluate the contents of a URL instead of just a string?
Это точно?
ScriptEngine не предоставляет возможности для загрузки и оценки содержимого URL-адреса, но это довольно легко сделать. ScriptEngine позволяет вам передать объект Reader, который он будет использовать для чтения сценария.
Попробуйте что-то вроде этого:
URL url = new URL( "http://someplace.net/stuff.ashx" );
InputStreamReader reader = new InputStreamReader( url.openStream() );
engine.eval( reader );
Вы пытаетесь получить доступ к объекту javascript на странице браузера из апплета java 1.6? Если так, то вы поступаете неправильно. Механизм сценариев предназначен не для этого. Это для запуска javascript внутри jvm, а не для того, чтобы апплет мог получить доступ к javascript из браузера.
Вот запись в блоге, который может вас куда-то привести, но не похоже, что у него много поддержки.
Я пытаюсь запустить javascript в jvm, но классы javascript, которые я хочу использовать, не являются стандартными классами, а находятся в этом файле src.
Нет, насколько мне известно, файл ashx содержит объекты javascript, которые необходимы браузеру для выполнения своих задач. Но я хочу запустить это в jvm, а не в моем браузере. Таким образом, URL-адрес - это не сценарий, а источник скомпилированных объектов для использования в сценарии.