2017-02-07 4 views
0

私はSpring起動のWebアプリケーションで引数を取っています。コマンドラインから@Scheduled cron式をオーバーライドしようとしていますが、springはjava.lang.IllegalStateExceptionで応答します。スプリングブートcmdラインcronの式java.lang.IllegalStateException

Initialization of bean failed; 
nested exception is java.lang.IllegalStateException: 
Encountered invalid @Scheduled method 'work': 
Cron expression must consist of 6 fields (found 1 in "0") 

私はスケジュール注釈で春のコンポーネントを持っている:

@Scheduled(cron="${myapp.cron}") 
public void work() { 
    ... 
} 

このようなapplication.propertiesファイルがあります:

myapp.cron=0 0 1 * * * 

は、私はへのMavenでアプリケーションをバンドルしていますjarファイルアプリケーションはJava 8を初期タスクとして持つubuntuマシン上で実行されます(/etc/init/myapp.conf)。

description "My app" 

start on runlevel [2345] 
stop on runlevel [!2345] 
respawn 
respawn limit 10 5 

setuid <USER> 
setgid <GROUP> 

script 
    java -Xms2G -Xmx2G -jar /opt/myapp.jar \ 
     --server.port=4014 \ 
     --server.address=127.0.0.1 
     --logging.file=/opt/myapp.log \ 
     --logging.level.root=INFO 
end script 

この時点まではすべて問題ありません。次の行を追加すると、上記の例外が発生します。

--myapp.cron=0 0 8 * * * 

どうしましたか?

乾杯、 甲斐

答えて

0

あなたは春の環境でそれを得るために、コマンドラインパラメータとして0 0 8 * * *に渡している甲斐、

。しかし、あなたのアプリは最初に0を可変値として取得します。したがって、必要な6つの部分については例外です。代わりに引用符で値を囲む:

--myapp.cron="0 0 8 * * *" 
+0

ありがとうございます – Kai