问题描述

报如下错误,很显然,问题原因:空指针异常;

ERROR (localhost-startStop-1) [   ] o.a.s.h.d.s.SolrDataImportProperties Error loading DataImportScheduler properties
java.lang.NullPointerException
        at sun.nio.fs.UnixPath.normalizeAndCheck(UnixPath.java:77)
        at sun.nio.fs.UnixPath.<init>(UnixPath.java:71)
        at sun.nio.fs.UnixFileSystem.getPath(UnixFileSystem.java:281)
        at java.nio.file.Paths.get(Paths.java:84)
        at org.apache.solr.core.SolrResourceLoader.<init>(SolrResourceLoader.java:151)
        at org.apache.solr.handler.dataimport.scheduler.SolrDataImportProperties.loadProperties(SolrDataImportProperties.java:36)
        at org.apache.solr.handler.dataimport.scheduler.BaseTimerTask.reloadParams(BaseTimerTask.java:57)
        at org.apache.solr.handler.dataimport.scheduler.BaseTimerTask.<init>(BaseTimerTask.java:39)
        at org.apache.solr.handler.dataimport.scheduler.DeltaImportHTTPPostScheduler.<init>(DeltaImportHTTPPostScheduler.java:20)
        at org.apache.solr.handler.dataimport.scheduler.ApplicationListener.contextInitialized(ApplicationListener.java:47)
        at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4716)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5178)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:152)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:724)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:700)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)
        at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1107)
        at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1841)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

详细原因:定时更新使用的jar包apache-solr-dataimportscheduler-1.1.jar是网上找的,好像版本更不上了,反编译一下,问题出在SolrDataImportProperties类的36行,如下标红位置:

    public void loadProperties(boolean force) {
try {
SolrResourceLoader loader = new SolrResourceLoader(null);
logger.info("Instance dir = " + loader.getInstanceDir()); String configDir = loader.getConfigDir();
configDir = SolrResourceLoader.normalizeDir(configDir);

我的solr版本是5.5.3,找到org.apache.solr.core.SolrResourceLoader,查看其构造方法,有四个,我们使用的是public SolrResourceLoader(Path instanceDir),由于传入的instanceDir为null报错(具体内部代码就没调试进去了):

  public SolrResourceLoader() {
this(locateSolrHome(), null, null);
} public SolrResourceLoader(Path instanceDir, ClassLoader parent)
{
this(instanceDir, parent, null);
} public SolrResourceLoader(Path instanceDir) {
this(instanceDir, null, null);
} public SolrResourceLoader(Path instanceDir, ClassLoader parent, Properties coreProperties)
{
if (instanceDir == null) {
  ...

如何解决

修改apache-solr-dataimportscheduler-1.1代码,调用无参构造方法,重新打包,经测试,定时增量更新和全量更新功能正常。

附件(修改后的jar包)

下载链接:

http://files.cnblogs.com/files/chenpi/solr-dataimportscheduler-1.1.1.zip

最新文章

  1. 安装 Visual Studio Web Tools 的奇怪问题
  2. 关于APP程序员泡沫经济
  3. CDN 实现原理
  4. JVM 平台上的各种语言的开发指南
  5. sql表结构和注释
  6. Windows 10 开始菜单修改程序
  7. HDU-2084 数塔 经典dp,水
  8. Discuz的缓存体系
  9. poj 1552 Doubles
  10. sdut 2847 Monitor (思维题)
  11. 调用AutoCAD的内置对话框
  12. 【HeadFirst设计模式】8.模板方法模式
  13. C++定义错误码类
  14. 详细的css命名规则,专业点吧
  15. 第一章 jQuery基础
  16. Unity使用C++作为游戏逻辑脚本的研究
  17. Changes of user relationship in AD can&#39;t be correctly synchronized to SCSM
  18. manacher算法,求回文串
  19. pl/sql dev安装
  20. vue项目localhost可以访问 ip不能访问

热门文章

  1. Webgl的2D开发方案(一)spritebatcher
  2. Marmoset Toolbag中的角色布光技巧 by Joe”EarthQuake”Wilson
  3. ABP框架实践基础篇之开发UI层
  4. iOS 地图定位及大头针的基本使用
  5. Atitit. 破解 &#160;拦截 绕过 网站 手机 短信 验证码 &#160;方式 v2 attilax 总结
  6. Xshell生成密钥key(用于Linux 免密码登录)
  7. Entity Framework Code First学习系列目录
  8. 初识 Sql Server存储过程
  9. ASP.NET MVC5+EF6+EasyUI 后台管理系统--工作流演示截图
  10. ASP.NET Core的配置(5):配置的同步[ 实例篇]