solr定時更新索引遇到的問題(SolrDataImportProperties Error loading DataImportScheduler properties java.lang.NullPointerException)

來源:互聯網
上載者:User

標籤:rda   unix   方法   查看   更新   ram   cto   erro   system   

 問題描述

報如下錯誤,很顯然,問題原因:null 指標異常;

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-source.zip

solr定時更新索引遇到的問題(SolrDataImportProperties Error loading DataImportScheduler properties java.lang.NullPointerException)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.