JAVA调用JS函数报错

wendaoshuangyue 2014-02-10 04:35:39
各位大侠,

现在遇到一个技术难题,我的JAVA程序调用一个JS函数,这个JS函数比较大,大概由600多个else if组成(由于函数比较长,这里只贴出一点),在同一个程序中,第一次调用没有问题,但是第二次调用就会报错,试了很多中方法,实在找不出原因,还请各位大牛看一下,我的代码哪里有问题,是否有需要释放内存的地方?

JS代码:

function convert(KOSTL,STAT1){
if(KOSTL == "122011") { return "10001175"; }
else if (KOSTL == "122021"){ return "10001170";}
else if (KOSTL == "122031"){ return "10001155";}
......
......
else{ return ""; }
}


JAVA代码:

package com.sunxin.test;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;

import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;

public class JsTest {

public static void main(String[] args) throws Exception {
testJSFile();
testJSFile();
}

private static void testJSFile() throws Exception {
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("javascript");
engine.eval(readJSFile());
Invocable inv = (Invocable) engine;
Object res = (Object) inv.invokeFunction("convert", new String[] { "505041", "D" });
System.out.println("res:" + res);
}

private static String readJSFile() throws Exception {
StringBuffer script = new StringBuffer();
File file = new File("js.txt");
FileReader filereader = new FileReader(file);
BufferedReader bufferreader = new BufferedReader(filereader);
String tempString = null;
while ((tempString = bufferreader.readLine()) != null) {
script.append(tempString).append("\n");
}
bufferreader.close();
filereader.close();
return script.toString();
}
}


console输出的log以及异常信息:

res:10001005
Exception in thread "main" javax.script.ScriptException: sun.org.mozilla.javascript.internal.EvaluatorException: Too deep recursion while parsing (<Unknown source>#367) in <Unknown source> at line number 367
at com.sun.script.javascript.RhinoScriptEngine.eval(RhinoScriptEngine.java:110)
at com.sun.script.javascript.RhinoScriptEngine.eval(RhinoScriptEngine.java:124)
at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:247)
at com.sunxin.test.JsTest.testJSFile(JsTest.java:21)
at com.sunxin.test.JsTest.main(JsTest.java:15)
...全文
414 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
慢慢地转变 2014-02-10
  • 打赏
  • 举报
回复
完全看不懂 LZ错误显示的最后2个at应该是你的错误指向吧。 我虽然不懂,但是我想的是第一次调用没有问题,第二次调用就不行的话,可以看看函数的结束是否有错误。
jackson_fighting 2014-02-10
  • 打赏
  • 举报
回复
程序优化一下吧
Defonds 2014-02-10
  • 打赏
  • 举报
回复
用的 applet 调用 js?

81,091

社区成员

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

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