概要 †
- Fessバッチファイルから起動したときはジョブスケジューラが正常に動作するが、タスクから起動したときにジョブスケジューラが正常に動作しない
- ログを確認すると、jvm.dllの呼び出しに失敗している
- JAVAのPATHの設定を変更する事で解決
詳細 †
現象 †
- Fessをfess.batから起動するとジョブスケジューラが正常に動作する
- Windowsのサービスに登録して起動すると、Fess自体は動作するが、ジョブスケジューラを「今すぐ開始」しても、すぐに終了して動作しない
- 「システム情報」→「ジョブログ」を確認しても、状態は「OK」になっているが、すぐに終了している。
- 夜間のバッチ処理でも同様
名前 | 状態 | 開始時間 | 終了時間 |
Default Crawler | OK | 2018-09-20T00:00:00 | 2018-09-20T00:00:00 |
Default Crawler | OK | 2018-09-19T16:36:39 | 2018-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_HOME | C:\Program Files\Java\jdk1.8.0_181 |
Path | C:\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:6594 / Today:5 / Yesterday:5