- 浏览: 1584549 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (603)
- T_java (145)
- T_script&ASP (51)
- T_C/C++ (25)
- T_PowerBuilder (11)
- T_Database (53)
- T_odoo (7)
- T_应用服务器 (50)
- T_专_条形码 (6)
- T_专_负载均衡器 (4)
- T_操作系统 (94)
- T_信息安全 (41)
- T_专_搜索引擎 (14)
- T_L_PHP (58)
- T_L_Delphi (18)
- T_L_.NET、C#、VisualStudio (25)
- T_L_Objective-C (6)
- T_移动开发 (53)
- T_网络 (109)
- T_大数据 (2)
- T_嵌入式 (2)
- T_小众技术 (24)
- T_未分类 (58)
- L_旅游印记 (1)
- L_生活随笔 (48)
- L_中国文化 (18)
- L_户外与生存 (0)
最新评论
-
csbean4004:
不知道哪传来得恶习,发帖子不好好发,故意弄错一些东西,很讨厌
让HTML5支持后置摄像头 -
withthewind:
终于找到一个可以用的了。。。
如何用VBA取得Word文档中的标题前面的序号 -
busbby:
兄弟,无法下载,说文件不完整
一个好用的Outlook ost格式文件转pst文件的工具 -
yijavakevin:
密码啊~解压密码多少?
一个二维条形码组件 -
vipbooks:
你给的那个链接根本无法下载,跳到官网看了下最新版12M,但点下 ...
十步以内完成精细web打印
Java中嵌入Javascript遭遇“"The choice of Java constructor replace matching JavaScript”
- 博客分类:
- T_java
今天在使用Solr的DataImportHandler时,需要用一个JavaScript函数来对数据做预处理,写的JS代码如下:
<script> <![CDATA[ var reg = new RegExp("[^\\d,]|^,+|,+$","g"); function cleanFJID(row){ var val = row.get("FJ"); var val = val.replace(reg,""); //把无效字符去掉 if(val=="") val = "null"; row.put('FJ', val); return row; } ]]> </script>
这段代码如果在浏览器里执行,应该是没有问题的,但是DIH执行时却报错:
警告: transformer threw error org.apache.solr.handler.dataimport.DataImportHandlerException: Could not invoke method :cleanFJID <script> null</script> Processing Document # 1 at org.apache.solr.handler.dataimport.ScriptTransformer.transformRow(ScriptTransformer.java:58) at org.apache.solr.handler.dataimport.EntityProcessorWrapper.applyTransformer(EntityProcessorWrapper.java:195) at org.apache.solr.handler.dataimport.EntityProcessorWrapper.nextRow(EntityProcessorWrapper.java:241) at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:357) at org.apache.solr.handler.dataimport.DocBuilder.doFullDump(DocBuilder.java:242) at org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:180) at org.apache.solr.handler.dataimport.DataImporter.doFullImport(DataImporter.java:331) at org.apache.solr.handler.dataimport.DataImporter.runCmd(DataImporter.java:389) at org.apache.solr.handler.dataimport.DataImporter$1.run(DataImporter.java:370) Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.solr.handler.dataimport.ScriptTransformer.transformRow(ScriptTransformer.java:53) ... 8 more Caused by: javax.script.ScriptException: sun.org.mozilla.javascript.internal.EvaluatorException: The choice of Java constructor replace matching JavaScript argument types (function,string) is ambiguous; candidate constructors are: class java.lang.String replace(char,char) class java.lang.String replace(java.lang.CharSequence,java.lang.CharSequence) (<Unknown source>#6) in <Unknown source> at line number 6 at com.sun.script.javascript.RhinoScriptEngine.invoke(RhinoScriptEngine.java:184) at com.sun.script.javascript.RhinoScriptEngine.invokeFunction(RhinoScriptEngine.java:142) ... 13 more 2010-6-18 1:43:40 org.apache.solr.handler.dataimport.DocBuilder buildDocument 严重: Exception while processing: XZ_SJFW document : SolrInputDocument[{}]
看字面的意思是JS的replace函数与java的replace方法混淆,导致javascript引擎不知该调用哪个方法,所以,我就使用了另外一种方法来引用正则表达式,修改后JS如下:
<script> <![CDATA[ //var reg = new RegExp("[^\\d,]|^,+|,+$","g"); function cleanFJID(row){ var val = row.get("FJ"); var val = val.replace(/[^\\d,]|^,+|,+$/g,""); //把无效字符去掉 if(val=="") val = "null"; row.put('FJ', val); return row; } ]]> </script>
满以为这样修改就不会再有问题,可以一执行,还是报差不多的错:
警告: transformer threw error org.apache.solr.handler.dataimport.DataImportHandlerException: Could not invoke method :cleanFJID <script> null</script> Processing Document # 1 at org.apache.solr.handler.dataimport.ScriptTransformer.transformRow(ScriptTransformer.java:58) at org.apache.solr.handler.dataimport.EntityProcessorWrapper.applyTransformer(EntityProcessorWrapper.java:195) at org.apache.solr.handler.dataimport.EntityProcessorWrapper.nextRow(EntityProcessorWrapper.java:241) at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:357) at org.apache.solr.handler.dataimport.DocBuilder.doFullDump(DocBuilder.java:242) at org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:180) at org.apache.solr.handler.dataimport.DataImporter.doFullImport(DataImporter.java:331) at org.apache.solr.handler.dataimport.DataImporter.runCmd(DataImporter.java:389) at org.apache.solr.handler.dataimport.DataImporter$1.run(DataImporter.java:370) Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.solr.handler.dataimport.ScriptTransformer.transformRow(ScriptTransformer.java:53) ... 8 more Caused by: javax.script.ScriptException: sun.org.mozilla.javascript.internal.EvaluatorException: The choice of Java constructor replace matching JavaScript argument types (function,string) is ambiguous; candidate constructors are: class java.lang.String replace(char,char) class java.lang.String replace(java.lang.CharSequence,java.lang.CharSequence) (<Unknown source>#5) in <Unknown source> at line number 5 at com.sun.script.javascript.RhinoScriptEngine.invoke(RhinoScriptEngine.java:184) at com.sun.script.javascript.RhinoScriptEngine.invokeFunction(RhinoScriptEngine.java:142) ... 13 more 2010-6-18 1:46:50 org.apache.solr.handler.dataimport.DocBuilder buildDocument 严重: Exception while processing: XZ_SJFW document : SolrInputDocument[{}]
这下我可傻眼了,搞不懂是什么原因了 !
上网一顿狠找,找到洋鬼子的一个贴子:
http://www.mirthcorp.com/community/forums/showthread.php?t=235
英文水平差,意思没看明白,但看到5楼有人回复,建议把字符串改成
var input = new String(strOut);
再调用replace试试,我照猫画虎,也把代码改成这样:
<script> <![CDATA[ //var reg = new RegExp("[^\\d,]|^,+|,+$","g"); function cleanFJID(row){ var val = row.get("FJ"); var str = new String(val); var val = str.replace(/[^\d,]|^,+|,+$/g,""); //把无效字符去掉 // var val = val.replace(reg,""); //把无效字符去掉 if(val=="") val = "null"; row.put('FJ', val); return row; } ]]> </script>
再试了一下,我的乖乖,问题解决了。不过仅管问题已经解决,但其中的子丑寅卯还是没弄明白 。
评论
1 楼
hoszb
2010-09-08
java有个script引擎,不导入第三方jar的情况下可以处理javascript,导入第三方jar的话,可以处理python,perl等
我实验过,java中运行js的效率极其低下,我的一个实验中同样的js代码运行时间是java的10倍,所以要做预处理的话还是扩展solr的Transformer接口吧,功能更多而且效率更好
我实验过,java中运行js的效率极其低下,我的一个实验中同样的js代码运行时间是java的10倍,所以要做预处理的话还是扩展solr的Transformer接口吧,功能更多而且效率更好
发表评论
-
SpringBoot Fat Jar解压运行
2018-06-28 21:40 2199SpringBoot已经成为当前最流行的微服务 ... -
一句话实现五星评分显示
2018-06-05 08:31 953Python: rate = 1 #rate 取值 ... -
来算google的可视化编程工具——Blockly,不仅仅是玩具
2017-10-16 21:34 32814Blockly - 来自Google的可 ... -
安卓动态分析工具 Inspeckage
2017-08-07 08:46 0工具介绍 一个基于Xposed 开发的应用动态分析工具 g ... -
Android逆向之旅---静态方式破解微信获取聊天记录和通讯录信息
2017-08-07 08:37 0一、猜想数据存放路径 微信现在是老少皆宜,大街小巷都在使用 ... -
破解微信数据库 并查询数据上传服务器
2017-08-07 08:29 0由于工作需求破解了微信的数据库 并获取想要的信息上传服 ... -
安卓黑科技之HOOK详解
2017-08-07 08:21 0本文带大家进入到安卓另一个世界 互联网攻防大战 Xpos ... -
安卓逆向之基于Xposed-ZjDroid脱壳
2017-08-07 08:18 0前言 之前介绍了普通常见的反编译模式 但对于使用了 360 ... -
十步以内完成精细web打印
2017-06-21 11:44 7305注意: 康虎云报表组 ... -
浏览器端精准打印或套打组件
2017-01-18 13:05 6649注意: 康虎云报表 ... -
疯狂软件对Oracle放弃Java EE的看法
2016-08-14 22:38 489来源:http://javaligang ... -
几个Java相关的思维导图
2016-03-17 13:07 921来源:http://blog.csdn.net/jackf ... -
jasperReport Applet 打印
2016-02-01 16:33 835Applet方式的原理是本地下载Applet以及Jas ... -
为Java说句公道话
2016-01-24 10:59 677为Java说句公道话 有些 ... -
Mybatis Generator配置详解(中文)_转
2015-12-17 16:44 875来自: http://www.jianshu.com/p/e ... -
一个提供大量数据模型的网站
2015-12-17 14:00 900网站地址是:http://www.databaseansw ... -
采用ajp代理模式配置Apache+tomcat实现负载均衡(转)
2015-11-13 10:22 821这一种方法,配置简单,性能也高。附AJP介绍: AJP ... -
MyBatis配置文件修改侦测及重载的实现
2015-07-31 13:53 2285MyBatis配置文件修改侦测及重载的实现: /** ... -
Spring optional @PathVariable?
2015-07-09 13:13 874Q: Is it possible to somehow ... -
The forked VM terminated without saying properly goodbye. VM crash or System.exi
2015-07-07 18:22 4090The forked VM terminated witho ...
相关推荐
This book is both an example-driven programmer's guide and a keep-on-your-desk reference, with new chapters that explain everything you need to know to get the most out of JavaScript, including: ...
included with the 1.2.1 version of the Java 2 Platform, Enterprise Edition (J2EE), so it is still commonly used. The version of the JavaMail API you want to use affects what you download and install...
通常情况下, JavaScript中建立一个对象用"new"加上constructor function来实现. 如new Date(), new Object()等. var book = new Object(); book.name = "JavaScript is Cool"; book.author = "tom"; book.pages = ...
本文档时关于Java的反射的一个组件Constructor的描述和讲解
对象的constructor属性用于返回创建该对象的函数,也就是我们常说的构造函数,除了创建对象,构造函数(constructor) 还做了另一件有用的事情—自动为创建的新对象设置了原型对象(prototype object)
This book is both an example-driven programmer's guide and a keep-on-your-desk reference, with new chapters that explain everything you need to know to get the most out of JavaScript, including: ...
Write a program called CollegeCourse that computes the cost of taking a college course. Include a constructor that requires a course ID number. Add a subclass Lab to compute a lab fee for a course ...
JavaScript的constructor属性[文].pdf
深化浅析JavaScript中的constructor_.docx
附件是自己总结在编程过程中所遇到的关于反射的内容,主要是详细的描述了关于Constructor、Mehod、Field和Class类的内容
主要介绍了JavaScript中constructor()方法的使用简介,是JS入门学习中的基础知识,需要的朋友可以参考下
This book is both an example-driven programmer's guide and a keep-on-your-desk reference, with new chapters that explain everything you need to know to get the most out of JavaScript, including: ...
* @return An instance of the ExceptionManager created by invoking the constructor * <code>ExceptionManager(String msg)</code>. */ public static ExceptionManager wrap(String msg){ return ...
* Create objects that go beyond the basic patterns of using object literals and constructor functions * Learn the options available for code reuse and inheritance in JavaScript * Study sample ...
constructor 属性返回对创建此对象的数组函数的引用。本文给大家介绍JavaScript中的constructor ,需要的朋友参考下吧
一直没弄清楚JavaScript中的prototype和constructor属性,今天看了看书,总算有点眉目了
The Function( ) Constructor and Function Literals Section 11.6. Netscape's JavaScript 1.2 Incompatibilities Part II: Client-Side JavaScript Chapter 12. JavaScript in Web Browsers Section ...
javascript new后的constructor属性.docx
useConstructor.java 使用构造器 useHideMember_2.java 试图使用隐藏的成员变量 useInner.java 使用内部类 第5章 示例描述:本章学习数组与字符串。 ArrayString.java 字符串数组 assignTwoDime.java 为二维...
Chapter 1 : Java Platform, Enterprise Edition Introduction Deliverables What’s New in Java EE 7 Chapter 2 : Servlets WebServlet Servlet Filters Event Listeners Asynchronous Support ...