关于在java中调用js的问题

u010475670 2013-04-27 07:57:28
jdk1.6自带调用js的类ScriptEngineManager、ScriptEngine

在实际使用中,执行如下代码的时候报错。


ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("javascript");
String jsFileName = "test.js"; // 读取js文件

FileReader reader = new FileReader(jsFileName); // 执行指定脚本

engine.eval(reader);




执行到engine.eval(reader); 的时候报错:

javax.script.ScriptException: sun.org.mozilla.javascript.internal.EcmaError: ReferenceError: "g" is not defined. (<Unknown source>#1) in <Unknown source> at line number 1
at com.sun.script.javascript.RhinoScriptEngine.eval(RhinoScriptEngine.java:110)
at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:232)




到网上大概查了下,发现说是这个js需要配合active控件才能正常读取。
这个js是从别的地方拉过来的。
求大神&大婶们帮忙
...全文
311 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
流火1987 2014-04-07
  • 打赏
  • 举报
回复
Java执行js的应用场景是什么,为什么要这样用?
名字不可见 2014-04-07
  • 打赏
  • 举报
回复 2
哥们们啊,Java的脚本引擎只是用来解释纯JavaScript的。你们说的alert不是JavaScript本身的函数,那是浏览器的专有东东,是浏览器的JavaScript解释器附加的函数。原始的JavaScript是没有的。仔细学习学习纯粹的JavaScript吧,不要把浏览器专有的JavaScript对象和函数也当成JavaScript本身就有的。Java的脚本引擎只是提供了解析脚本的功能,想实现浏览器中的那些函数,需要自己继续开发浏览器的那部分解释器功能。
tom_7 2014-04-07
  • 打赏
  • 举报
回复
方法挺多,换个试试!!
zgh_mnb 2013-04-28
  • 打赏
  • 举报
回复
引用 2 楼 u010475670 的回复:
问题是没加载上。 在加载的时候就会报错。 忘记说了,js中有类似jquery 中 $ 这样的表达式。 所以加载会报错。 找别的途径了,就是换个没有$的js、
我试了,没有$也不行 单单一个alert都不识别。好奇吧的东西啊
zgh_mnb 2013-04-28
  • 打赏
  • 举报
回复
引用 6 楼 splendid_java 的回复:
引用 5 楼 zgh_mnb 的回复:
[quote=引用 4 楼 splendid_java 的回复:] 还有一种方法可以调用js
什么方法 我也很好奇
使用这个对象:netscape.javascript.JSObject 然后 JSObject.eval("javascript:function_name(参数)")[/quote]我试试 先感谢下
ZHOU西口 2013-04-28
  • 打赏
  • 举报
回复
引用 5 楼 zgh_mnb 的回复:
引用 4 楼 splendid_java 的回复:
还有一种方法可以调用js
什么方法 我也很好奇
使用这个对象:netscape.javascript.JSObject 然后 JSObject.eval("javascript:function_name(参数)")
zgh_mnb 2013-04-28
  • 打赏
  • 举报
回复
引用 4 楼 splendid_java 的回复:
还有一种方法可以调用js
什么方法 我也很好奇
ZHOU西口 2013-04-28
  • 打赏
  • 举报
回复
还有一种方法可以调用js
zgh_mnb 2013-04-28
  • 打赏
  • 举报
回复
java后台能控制前台页面?
u010475670 2013-04-28
  • 打赏
  • 举报
回复
问题是没加载上。 在加载的时候就会报错。 忘记说了,js中有类似jquery 中 $ 这样的表达式。 所以加载会报错。 找别的途径了,就是换个没有$的js、
bonlog 2013-04-28
  • 打赏
  • 举报
回复
java是服务器端语言,你所说的调用js 你要把加载后的代码发出来的。 activex 就是起到信任的
u010475670 2013-04-28
  • 打赏
  • 举报
回复
引用 7 楼 zgh_mnb 的回复:
引用 6 楼 splendid_java 的回复:
[quote=引用 5 楼 zgh_mnb 的回复:] [quote=引用 4 楼 splendid_java 的回复:] 还有一种方法可以调用js
什么方法 我也很好奇
使用这个对象:netscape.javascript.JSObject 然后 JSObject.eval("javascript:function_name(参数)")[/quote]我试试 先感谢下[/quote] 别用alert,就是我的方法也不能用alert,试试c=a+b;return c;这样的。然后后台接受了输出

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧