Top > オープンソース全文検索サーバー Fessのジョブスケジューラが動かない

概要

  • Fessバッチファイルから起動したときはジョブスケジューラが正常に動作するが、タスクから起動したときにジョブスケジューラが正常に動作しない
  • ログを確認すると、jvm.dllの呼び出しに失敗している
  • JAVAのPATHの設定を変更する事で解決

詳細

現象

  • Fessをfess.batから起動するとジョブスケジューラが正常に動作する
  • Windowsのサービスに登録して起動すると、Fess自体は動作するが、ジョブスケジューラを「今すぐ開始」しても、すぐに終了して動作しない
  • 「システム情報」→「ジョブログ」を確認しても、状態は「OK」になっているが、すぐに終了している。
  • 夜間のバッチ処理でも同様
    名前状態開始時間終了時間
    Default CrawlerOK2018-09-20T00:00:002018-09-20T00:00:00
    Default CrawlerOK2018-09-19T16:36:392018-09-19T16:36:40

ログを確認

  • fess.logを確認すると以下のエラーが出力されている
    2018-09-20 00:00:00,608 [job_default_crawler] WARN  Failed to evalue groovy script: return container.getComponent("crawlJob").logLevel("info").execute(executor); => {executor=org.codelibs.fess.job.impl.GroovyExecutor@1f571c6}
    org.codelibs.fess.exception.FessSystemException: Exit Code: 4
    Output:
    Error: missing `server' JVM at `C:\Program Files\Java\jre1.8.0_181\bin\server\jvm.dll'.
    Please install or use the JRE or JDK that contains these missing components.
  • jvm.dllのパスを確認すると、「C:\Program Files\Java\jre1.8.0_181\bin\server\」が存在していない
  • 代わりに「C:\Program Files\Java\jre1.8.0_181\bin\client」は存在するので、試しに「client」フォルダを「server」という名前でコピーして動作確認すると、ジョブスケジューラが正常に動作する

JAVAのPATH

  • システム環境変数ではJAVA_HOMEを設定している
    JAVA_HOMEC:\Program Files\Java\jdk1.8.0_181
    PathC:\Program Files\Common Files\Oracle\Java\javapath;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;%JAVA_HOME%\bin
  • JDKのパスを指定しているのに、JREのパスを参照しているのはなぜか。。。
  • コマンドプロンプトで確認すると
    C:\>java -version
    java version "1.8.0_181"
    Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
    Java HotSpot(TM) Client VM (build 25.181-b13, mixed mode, sharing)
    
    C:\>where java
    C:\Program Files\Common Files\Oracle\Java\javapath\java.exe
    C:\Program Files\Java\jdk1.8.0_181\bin\java.exe
  • JDKの前に「C:\Program Files\Common Files\Oracle\Java\javapath\java.exe」が入っている
  • Pathの設定で最初に「C:\Program Files\Common Files\Oracle\Java\javapath」が入っているのが原因
  • Pathの設定を以下のように変更
    Path%JAVA_HOME%\bin;C:\Program Files\Common Files\Oracle\Java\javapath;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\
  • Windowsを再起動
  • コマンドプロンプトで確認
    C:\>where java
    C:\Program Files\Java\jdk1.8.0_181\bin\java.exe
    C:\Program Files\Common Files\Oracle\Java\javapath\java.exe
  • この状態でジョブスケジューラの動作を確認すると、サービスから起動した場合でも、正常に動作する

参考


Fess JAVA JAVA_HOME PATH Total:176 / Today:1 / Yesterday:1


リロード   差分   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: Thu, 20 Sep 2018 11:02:06 JST (86d)