この日記は私的なものであり所属会社の見解とは無関係です。 GitHub: takahashikzn

Java9でDateTimeException→jarファイルのタイムスタンプを確認

うちのメンバーのマシン上でビルドしたwarをTomcatに配備したらこんなエラーが出ました。

Caused by: java.time.DateTimeException: Invalid value for MonthOfYear (valid values 1 - 12): 0
        at java.base/java.time.temporal.ValueRange.checkValidValue(ValueRange.java:311)
        at java.base/java.time.temporal.ChronoField.checkValidValue(ChronoField.java:714)
        at java.base/java.time.LocalDate.of(LocalDate.java:269)
        at java.base/java.time.LocalDateTime.of(LocalDateTime.java:336)
        at java.base/java.util.zip.ZipUtils.dosToJavaTime(ZipUtils.java:82)
        at java.base/java.util.zip.ZipUtils.extendedDosToJavaTime(ZipUtils.java:101)
        at java.base/java.util.zip.ZipEntry.getTime(ZipEntry.java:198)
        at org.apache.catalina.startup.ExpandWar.expand(ExpandWar.java:167)
        at org.apache.catalina.startup.ContextConfig.fixDocBase(ContextConfig.java:615)
        at org.apache.catalina.startup.ContextConfig.beforeStart(ContextConfig.java:748)
        at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:301)
        at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:94)
        at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:395)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:149)
        ... 10 more

他のメンバーのマシンではこのエラーが発生しません。よって環境問題です。

ビルドしたwarの中身を見てみた所、こんなことになってます。何だこりゃ。

f:id:takahashikzn:20170929150420p:plain

で、当該者のWindows上で、タイムスタンプが"----/--/--"になっているjarファイルのプロパティを見てみたところ、

f:id:takahashikzn:20170929150831p:plain

となっておりました。タイムスタンプが腐っておる。

というわけで当該のjarファイルをダウンロードしなおしたら、エラーは出なくなりました。

多分ファイルシステムが一部破損していたのだと思います。