import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException; /**
* @Author: SimonHu
* @Date: 2019/2/12 11:13
* @Description:
*/
public class Test {
public static void main(String[] args) {
ScriptEngineManager scriptEngineManager=new ScriptEngineManager();
ScriptEngine scriptEngine=scriptEngineManager.getEngineByName("javascript");
try {
scriptEngine.eval("function getSwjg(fpdm, ckflag){\n" +
"\tvar flag = \"\";\n" +
"eval(function(p,a,c,k,e,d){e=function(c){return(c<a?\"\":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\\\b'+e(c)+'\\\\b','g'),k[c]);return p;}('19 18=[{\\'8\\':\\'1a\\',\\'6\\':\\'1c\\',\\'7\\':\\'0://L.D.2.1:4\\',\\'9\\':\\'0://L.D.2.1:4\\'},{\\'8\\':\\'1b\\',\\'6\\':\\'14\\',\\'7\\':\\'0://3.G.2.1:4\\',\\'9\\':\\'0://3.G.2.1:4\\'},{\\'8\\':\\'13\\',\\'6\\':\\'15\\',\\'7\\':\\'0://3.N-n-5.2.1:c\\',\\'9\\':\\'0://3.N-n-5.2.1:c\\'},{\\'8\\':\\'17\\',\\'6\\':\\'16\\',\\'7\\':\\'0://3.R-n-5.2.1:4\\',\\'9\\':\\'0://3.R-n-5.2.1:4\\'},{\\'8\\':\\'1d\\',\\'6\\':\\'1k\\',\\'7\\':\\'0://3.o-n-5.2.1:4\\',\\'9\\':\\'0://3.o-n-5.2.1:4\\'},{\\'8\\':\\'1j\\',\\'6\\':\\'1l\\',\\'7\\':\\'0://3.5.d.1:4\\',\\'9\\':\\'0://3.5.d.1:4\\'},{\\'8\\':\\'1n\\',\\'6\\':\\'1m\\',\\'7\\':\\'0://3.w.2.1:4\\',\\'9\\':\\'0://3.w.2.1:4\\'},{\\'8\\':\\'1f\\',\\'6\\':\\'1e\\',\\'7\\':\\'0://3.z-n-5.2.1:k\\',\\'9\\':\\'0://3.z-n-5.2.1:k\\'},{\\'8\\':\\'1g\\',\\'6\\':\\'1i\\',\\'7\\':\\'0://3.r-n-5.2.1:4\\',\\'9\\':\\'0://3.r-n-5.2.1:4\\'},{\\'8\\':\\'1h\\',\\'6\\':\\'12\\',\\'7\\':\\'0://a.5.t.2.1:q\\',\\'9\\':\\'0://a.5.t.2.1:q\\'},{\\'8\\':\\'10\\',\\'6\\':\\'W\\',\\'7\\':\\'0://e.m.2.1:b\\',\\'9\\':\\'0://e.m.2.1:b\\'},{\\'8\\':\\'V\\',\\'6\\':\\'Y\\',\\'7\\':\\'0://a.T.2.1:4\\',\\'9\\':\\'0://a.T.2.1:4\\'},{\\'8\\':\\'Z\\',\\'6\\':\\'11\\',\\'7\\':\\'0://3.K-n-5.2.1:4\\',\\'9\\':\\'0://3.K-n-5.2.1:4\\'},{\\'8\\':\\'X\\',\\'6\\':\\'1S\\',\\'7\\':\\'0://3.I-n-5.2.1:4\\',\\'9\\':\\'0://3.I-n-5.2.1:4\\'},{\\'8\\':\\'1R\\',\\'6\\':\\'1T\\',\\'7\\':\\'0://a.C-n-5.2.1:4\\',\\'9\\':\\'0://a.C-n-5.2.1:4\\'},{\\'8\\':\\'1V\\',\\'6\\':\\'1U\\',\\'7\\':\\'0://3.U-n-5.2.1\\',\\'9\\':\\'0://3.U-n-5.2.1\\'},{\\'8\\':\\'1Q\\',\\'6\\':\\'1M\\',\\'7\\':\\'0://3.B.2.1:c\\',\\'9\\':\\'0://3.B.2.1:c\\'},{\\'8\\':\\'1L\\',\\'6\\':\\'1N\\',\\'7\\':\\'0://3.h-n-5.2.1:4\\',\\'9\\':\\'0://3.h-n-5.2.1:4\\'},{\\'8\\':\\'1P\\',\\'6\\':\\'1O\\',\\'7\\':\\'0://3.A-n-5.2.1:4\\',\\'9\\':\\'0://3.A-n-5.2.1:4\\'},{\\'8\\':\\'23\\',\\'6\\':\\'22\\',\\'7\\':\\'0://3.j-n-5.2.1\\',\\'9\\':\\'0://3.j-n-5.2.1\\'},{\\'8\\':\\'24\\',\\'6\\':\\'26\\',\\'7\\':\\'0://3.p-n-5.2.1:4\\',\\'9\\':\\'0://3.p-n-5.2.1:4\\'},{\\'8\\':\\'25\\',\\'6\\':\\'21\\',\\'7\\':\\'0://3.u.2.1:s\\',\\'9\\':\\'0://3.u.2.1:s\\'},{\\'8\\':\\'1X\\',\\'6\\':\\'1W\\',\\'7\\':\\'0://3.v-n-5.2.1:4\\',\\'9\\':\\'0://3.v-n-5.2.1:4\\'},{\\'8\\':\\'1Y\\',\\'6\\':\\'20\\',\\'7\\':\\'0://3.y.2.1:4\\',\\'9\\':\\'0://3.y.2.1:4\\'},{\\'8\\':\\'1Z\\',\\'6\\':\\'1K\\',\\'7\\':\\'0://3.x.2.1:g\\',\\'9\\':\\'0://3.x.2.1:g\\'},{\\'8\\':\\'1v\\',\\'6\\':\\'1u\\',\\'7\\':\\'0://3.f.2.1:4\\',\\'9\\':\\'0://3.f.2.1:4\\'},{\\'8\\':\\'1w\\',\\'6\\':\\'1y\\',\\'7\\':\\'0://3.i.2.1:b\\',\\'9\\':\\'0://3.i.2.1:b\\'},{\\'8\\':\\'1x\\',\\'6\\':\\'1t\\',\\'7\\':\\'0://3.l-n-5.2.1:4\\',\\'9\\':\\'0://3.l-n-5.2.1:4\\'},{\\'8\\':\\'1p\\',\\'6\\':\\'1o\\',\\'7\\':\\'0://3.Q-n-5.2.1:b\\',\\'9\\':\\'0://3.Q-n-5.2.1:b\\'},{\\'8\\':\\'1q\\',\\'6\\':\\'1s\\',\\'7\\':\\'0://3.P.2.1:4\\',\\'9\\':\\'0://3.P.2.1:4\\'},{\\'8\\':\\'1r\\',\\'6\\':\\'1G\\',\\'7\\':\\'0://3.O.2.1:S\\',\\'9\\':\\'0://3.O.2.1:S\\'},{\\'8\\':\\'1F\\',\\'6\\':\\'1H\\',\\'7\\':\\'0://a.F-n-5.2.1:4\\',\\'9\\':\\'0://a.F-n-5.2.1:4\\'},{\\'8\\':\\'1J\\',\\'6\\':\\'1I\\',\\'7\\':\\'0://3.E-n-5.2.1:4\\',\\'9\\':\\'0://3.E-n-5.2.1:4\\'},{\\'8\\':\\'1E\\',\\'6\\':\\'1A\\',\\'7\\':\\'0://3.H-n-5.2.1:4\\',\\'9\\':\\'0://3.H-n-5.2.1:4\\'},{\\'8\\':\\'1z\\',\\'6\\':\\'1B\\',\\'7\\':\\'0://3.M.2.1:4\\',\\'9\\':\\'0://3.M.2.1:4\\'},{\\'8\\':\\'1D\\',\\'6\\':\\'1C\\',\\'7\\':\\'0://3.J-n-5.2.1:4\\',\\'9\\':\\'0://3.J-n-5.2.1:4\\'}];',62,131,'https|cn|gov|fpcy|443|tax|sfmc|Ip|code|address|fpcyweb|80|82|ln|fpdk|hitax|8200|sd|cqsw|ha|4432|sc|jsgs||nm|hb|1001|hl|8083|sh|hntax|gd|dlntax|gxgs|szgs|jl|qd|jxgs|fj|bjsat|gs|sn|tjsat|qh|ah|xj|nb|zjfpcyweb|nxgs|he|xztax|yngs|gz|sx|81|zjtax|xm|3300|江苏|3400|浙江|3302|3200|宁波|上海|1300|天津|河北|山西|1400|citys|var|1100|1200|北京|1500|吉林|2200|2300|3100|黑龙江|2100|内蒙古|辽宁|大连|2102|贵州|5200|5300|5400|云南|四川|海南|4600|5000|5100|重庆|6400|青海|宁夏|新疆|6500|6300|6100|西藏|陕西|甘肃|6200|广西|3700|江西|山东|青岛|3702|3600|3500|安徽|福建|厦门|3502|广东|4400|4403|4500|深圳|湖南|河南|4100|4200|4300|湖北'.split('|'),0,{}))\n" +
"\n" +
"var dqdm=null;var swjginfo=new Array();if(fpdm.length==12){dqdm=fpdm.substring(1,5)}else{dqdm=fpdm.substring(0,4)}if(dqdm!=\"2102\"&&dqdm!=\"3302\"&&dqdm!=\"3502\"&&dqdm!=\"3702\"&&dqdm!=\"4403\"){dqdm=dqdm.substring(0,2)+\"00\"}for(var i=0;i<citys.length;i++){if(dqdm==citys[i].code){swjginfo[0]=citys[i].sfmc;if(flag=='debug'){swjginfo[1]=\"\";swjginfo[2]=dqdm}else{swjginfo[1]=citys[i].Ip+\"/WebQuery\";swjginfo[2]=dqdm}break}}return swjginfo;\n" +
"}"); Invocable invocable= (Invocable) scriptEngine;
} catch (ScriptException e) {
e.printStackTrace();
}catch (Exception e){
e.printStackTrace();
}
}
}
java.lang.ArrayIndexOutOfBoundsException: -1
at jdk.nashorn.internal.codegen.CodeGeneratorLexicalContext.nextFreeSlot(CodeGeneratorLexicalContext.java:195)
at jdk.nashorn.internal.codegen.CodeGenerator.initLocals(CodeGenerator.java:958)
at jdk.nashorn.internal.codegen.CodeGenerator.enterBlock(CodeGenerator.java:568)
at jdk.nashorn.internal.ir.Block.accept(Block.java:142)
at jdk.nashorn.internal.ir.LexicalContextNode$Acceptor.accept(LexicalContextNode.java:57)
at jdk.nashorn.internal.ir.Block.accept(Block.java:361)
at jdk.nashorn.internal.codegen.CodeGenerator.enterIfNode(CodeGenerator.java:1154)
at jdk.nashorn.internal.ir.IfNode.accept(IfNode.java:76)
at jdk.nashorn.internal.ir.Node.accept(Node.java:291)
at jdk.nashorn.internal.ir.Block.accept(Block.java:143)
at jdk.nashorn.internal.ir.LexicalContextNode$Acceptor.accept(LexicalContextNode.java:57)
at jdk.nashorn.internal.ir.Block.accept(Block.java:361)
at jdk.nashorn.internal.ir.FunctionNode.accept(FunctionNode.java:309)
at jdk.nashorn.internal.ir.LexicalContextNode$Acceptor.accept(LexicalContextNode.java:57)
at jdk.nashorn.internal.ir.LexicalContextExpression.accept(LexicalContextExpression.java:46)
at jdk.nashorn.internal.ir.FunctionNode.accept(FunctionNode.java:50)
at jdk.nashorn.internal.codegen.CodeGenerator$1.enterFunctionNode(CodeGenerator.java:456)
at jdk.nashorn.internal.ir.FunctionNode.accept(FunctionNode.java:308)
at jdk.nashorn.internal.ir.LexicalContextNode$Acceptor.accept(LexicalContextNode.java:57)
at jdk.nashorn.internal.ir.LexicalContextExpression.accept(LexicalContextExpression.java:46)
at jdk.nashorn.internal.ir.FunctionNode.accept(FunctionNode.java:50)
at jdk.nashorn.internal.codegen.CodeGenerator.load(CodeGenerator.java:424)
at jdk.nashorn.internal.codegen.CodeGenerator.load(CodeGenerator.java:359)
at jdk.nashorn.internal.codegen.CodeGenerator.enterVarNode(CodeGenerator.java:2175)
at jdk.nashorn.internal.ir.VarNode.accept(VarNode.java:125)
at jdk.nashorn.internal.ir.Node.accept(Node.java:291)
at jdk.nashorn.internal.ir.Block.accept(Block.java:143)
at jdk.nashorn.internal.ir.LexicalContextNode$Acceptor.accept(LexicalContextNode.java:57)
at jdk.nashorn.internal.ir.Block.accept(Block.java:361)
at jdk.nashorn.internal.ir.FunctionNode.accept(FunctionNode.java:309)
at jdk.nashorn.internal.ir.LexicalContextNode$Acceptor.accept(LexicalContextNode.java:57)
at jdk.nashorn.internal.ir.LexicalContextExpression.accept(LexicalContextExpression.java:46)
at jdk.nashorn.internal.ir.FunctionNode.accept(FunctionNode.java:50)
at jdk.nashorn.internal.codegen.CompilationPhase$8.transform(CompilationPhase.java:379)
at jdk.nashorn.internal.codegen.CompilationPhase.apply(CompilationPhase.java:513)
at jdk.nashorn.internal.codegen.Compiler.compile(Compiler.java:361)
at jdk.nashorn.internal.runtime.Context.compile(Context.java:1071)
at jdk.nashorn.internal.runtime.Context.compileScript(Context.java:1019)
at jdk.nashorn.internal.runtime.Context.compileScript(Context.java:490)
at jdk.nashorn.api.scripting.NashornScriptEngine.compileImpl(NashornScriptEngine.java:651)
at jdk.nashorn.api.scripting.NashornScriptEngine.compileImpl(NashornScriptEngine.java:640)
at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:521)
at jdk.nashorn.api.scripting.NashornScriptEngine.eval(NashornScriptEngine.java:192)
at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:264)
at com.zhx.util.irsutil.Tets.main(Tets.java:21)
Disconnected from the target VM, address: '127.0.0.1:49825', transport: 'socket' Process finished with exit code 0
 jdk 内嵌的引擎有 bug,那个叫 nashorn 的东西,在群里问了大佬,说是jdk小版本的问题,我本地是1.8.0_25的,同事的是1.8.0_144,换成新版本的就可以了。

ScriptEngine执行复杂js报数组越界的更多相关文章

  1. XCode6报数组越界错误的问题

    今天碰到一个非常奇葩的问题, 调试了半天: 错误:"index 0 beyond bounds for empty array",  意思就是说数据源数组为nil, 所以你调用直接 ...

  2. selenium执行js报错

    selenium执行js报错 Traceback (most recent call last):    dr.execute_script(js)  File "C:\Python27\l ...

  3. .NET EF执行sql报数组超出了索引

    使用ef查询,写sql语句的 一般情况报数组超出了索引都认为是[i]里面的值超出了,但是执行sql报超出了索引,让人很蒙 在网上找了半天也没有结果,后来只能自己来解决了. 在异常里面能看到dbnull ...

  4. IE8.0.6001这个版本执行JS报错

    现场: OS  winserver 2008 IE8.0.6001.18702   JS报错,不能登陆 OS  XP   IE8.0.6001.18702CO     JS报错,不能登陆 公司测试: ...

  5. JavaScript的使用以及JS常用函数(JS 遍历数组和集合)

    JavaScript入门 学习总结 1. 什么是 JavaScript 2. JavaScript 的特点 3. JS的使用 编写位置 基本语法 变量 打印变量 数据类型 innerHTML和inne ...

  6. 🏆【Java技术专区】「编译器专题」重塑认识Java编译器的执行过程(消除数组边界检查+公共子表达式)!

    前提概要 Java的class字节码并不是机器语言,要想让机器能够执行,还需要把字节码翻译成机器指令.这个过程是Java虚拟机做的,这个过程也叫编译.是更深层次的编译. 在编译原理中,把源代码翻译成机 ...

  7. iOS如何彻底避免数组越界

    我们先来看看有可能会出现的数组越界Crash的地方: ? 1 2 3 4 5 6 7 - (void)tableView:(UITableView *)tableView didSelectRowAt ...

  8. Vue.js报错Failed to resolve filter问题原因

    Vue.js报错Failed to resolve filter问题原因 金刚 vue Vue.js js javascript 之前使用vue.js写分页功能时,写了一个过滤器,发现一个比较奇怪的错 ...

  9. js对数组的操作函数

    js数组的操作 用 js有很久了,但都没有深究过js的数组形式.偶尔用用也就是简单的string.split(char).这段时间做的一个项目,用到数组的地方很多, 自以为js高手的自己居然无从下手, ...

随机推荐

  1. go语言基础知识笔记(二)之数组和切片

    数组和切片知识用的也是比较多,的给我们工作带来很大的便利 (一) 数组 定义:在golang中数组的长度是不可变,数组存放要求是同一种数据类型 //golang中数组定义的四种方法1.先声明,后赋值 ...

  2. uCosII中的任务

    任务基本概念 任务是一个接受操作系统管理的独立运行单元,在uCosII中类似与普通平台上的main()函数,需要自己来保护其因调用或中断二产生的断点,所以需要一个自己的私有堆栈,即任务堆栈: 任务有两 ...

  3. (Python3 自定义函数实现数字金字塔 代码

    def kzkz(ceng): for i in range(1,ceng+1): print(" "*(ceng-i),end='') n=i while(n>=1): p ...

  4. 【转】关于Tomcat下项目线程启动两次的问题

    最近遇见了一个很搞得事情,在tomcat下启动项目时自己写的定时程序被执行了两次,导致程序启动了两个线程,使定时任务在几秒间隔内执行了两次,后来通过日志查到,原来是tomcat将项目启动了两次,为什么 ...

  5. Linux_解决启动网卡失败 Device eth0 does not seem to be present

    Linux_解决启动网卡失败  Device eth0 does not seem to be present 虚拟机克隆  发现service network restart 启动失败 故障现象: ...

  6. spring 4 + hibernate 4 配置数据库事务

    配置事务时应该加载aopalliance-1.0.jar和aspectjweaver.jar这两个包,这两个包是必须的.

  7. Object类中方法详解

    目录 概述 hashCode方法 getClass方法 toString方法 equals方法 clone方法 finalize方法 概述 Object 是类层次结构的根类.每个类都使用 Object ...

  8. rethinking imageNet pre-training

    paper url: https://arxiv.org/abs/1811.08883  当在数据量足够和训练iterations足够的情况下,ImageNet pretrain不会对最后的性能有帮 ...

  9. mysql-数据(记录)相关操作(增删改查)及权限管理

    一.介绍 在MySQL管理软件中,可以通过SQL语句中的DML语言来实现数据的操作,包括 使用INSERT实现数据的插入 UPDATE实现数据的更新 使用DELETE实现数据的删除 使用SELECT查 ...

  10. CentOS下MySQL安装失败,报socket '/tmp/mysql.sock错误解决方法

    1.在centos里安装mysql数据库后,登录时提示‘/tmp/mysql.sock’ 第一种解决办法:采用ln链接方式进行处理 ln -s /var/lib/mysql/mysql.sock /t ...