JAVA调用JS函数报错
各位大侠,
现在遇到一个技术难题,我的JAVA程序调用一个JS函数,这个JS函数比较大,大概由600多个else if组成(由于函数比较长,这里只贴出一点),在同一个程序中,第一次调用没有问题,但是第二次调用就会报错,试了很多中方法,实在找不出原因,还请各位大牛看一下,我的代码哪里有问题,是否有需要释放内存的地方?
JS代码:
JAVA代码:
console输出的log以及异常信息:
现在遇到一个技术难题,我的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)
...全文
相关推荐
java,html,jquery,js各种报错解决方案
文本包括java中各文件的解决方案、日记,是经验的结晶
Dwr3.0纯注解(纯Java Code配置)配置与应用浅析三之后端反向调用前端
Dwr是为人所熟知的前端框架,其异步推送功能是为人所津津乐道的,下来主要研究一下它的这个功能是怎么应用的;
JavaScript之私有属性,私有函数,函数实现对外不可见
通过引入了Class对象,可以创建拥有私有函数,私有属性,函数实现对外不可见的能力,私有属性以及私有函数只有内部才可以调用
Java代码调用HTML5中的JS函数算法
Java代码调用HTML5中的JS函数算法,这样就可以轻松解密..
java javascript 调用命令行 cmd
java javascript 调用cmd命令


Web 开发

