使用带有外部src属性的javascript的javax.script包

使用带有外部src属性的javascript的javax.script包,java,javascript,javax.script,Java,Javascript,Javax.script,假设我有一些javascript,如果在浏览器中运行,会像这样键入 <script type="text/javascript" src="http://someplace.net/stuff.ashx"></script> <script type="text/javascript"> var stuff = null; stuff = new TheStuff('myStuff'); </script> …但是“Java

假设我有一些javascript,如果在浏览器中运行,会像这样键入

<script type="text/javascript"
    src="http://someplace.net/stuff.ashx"></script>

<script type="text/javascript">
   var stuff = null;
   stuff = new TheStuff('myStuff');
</script>

…但是“JavaScript”引擎在默认情况下不知道关于thestaff类的任何信息,因为这些信息在remote.ashx文件中。我可以看看上面的src字符串吗?

您似乎在问:

如何让
ScriptEngine
计算URL的内容而不仅仅是字符串

准确吗

ScriptEngine
不提供下载和评估URL内容的工具,但它相当容易做到
ScriptEngine
允许您传入它将用于读取脚本的
读取器
对象

试着这样做:

URL url = new URL( "http://someplace.net/stuff.ashx" );
InputStreamReader reader = new InputStreamReader( url.openStream() );
engine.eval( reader );

您是否试图从java 1.6小程序访问浏览器页面中的javascript对象?如果是这样的话,你就错了。这不是脚本引擎的用途。它用于在jvm中运行javascript,而不是让小程序从浏览器中访问javascript


这是一个可能会让您有所收获的方法,但它看起来没有太多的支持。

不,据我所知,ashx文件包含浏览器需要执行的javascript对象。但是我想在jvm中运行它,而不是在我的浏览器中。因此url不是脚本,而是脚本中要使用的已编译对象的源。我试图在jvm中运行javascript,但我想要使用的javascript类不是标准类,而是在这个src文件中。
URL url = new URL( "http://someplace.net/stuff.ashx" );
InputStreamReader reader = new InputStreamReader( url.openStream() );
engine.eval( reader );