小さいシステムバージョンアップしようとしたら色々コンパイルエラー(他)が出たので作業しながらメモ残す。新バージョンのライブラリ(Junitとか)は極力新しい奴のデフォルトに合わせる予定だが、つらくなったら妥協する。
作業内容
- 2.1.6.RELEASEから3.2.3
- JDKは11から17(21のバイナリで17動作指定)
Junitのエラー
Junit4系から5系に変わりった。
以下2つがコンパイルエラー。
- import org.junit.Test
- import org.junit.runner
org.junit.jupiter.api.Test に代わってrunnerはいらない
import static org.junit.Assert.assertHOGE
import static org.junit.jupiter.api.Assertions.assertHOGEに
import javax.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletRequest;にパッケージ名が変わっている
import org.hibernate.validator
jakarta.validation.constraints.HOGEへ
以下はいれてコンパイルエラーは消えるがすでに org.hibernate.validatorはDuplicateだった。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency>
import javax.persistence.HOGE
jakarta.persistence.HOGEへ
とりあえずコンパイルエラーは消えた。このあと実行時のやつらを
実行時のjar重複
Standard Commons Logging discovery in action with spring-jcl: please remove commons-logging.jar from classpath in order to avoid potential conflicts
こちらによるとほかの依存している奴と重複すると警告がでる。
依存関係から除外
<dependency> <groupId>jp.co.epea</groupId> <artifactId>jpholiday</artifactId> <version>0.0.1</version> <exclusions> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> </exclusions> </dependency>
LogLevelの型?
Failed to bind properties under 'logging.level.org.hibernate.sql' to org.springframework.boot.logging.LogLevel: Property: logging.level.org.hibernate.sql Value: "DUBUG" Origin: class path resource [application.properties] - 12:33 Reason: failed to convert java.lang.String to org.springframework.boot.logging.LogLevel (caused by java.lang.IllegalArgumentException: No enum constant org.springframework.boot.logging.LogLevel.DUBUG) Action: Update your application's configuration. The following values are valid: DEBUG ERROR FATAL INFO OFF TRACE WARN
application.propertiesのログレベル指定をorg.springframework.boot.logging.LogLevel=DUBUGにしたらとりあえず動くけどそんなプロパティないと警告出ている。また、デバックログは出てないっぽい。そもそもなにも働いていないからエラーにもならないだけだな。
Description Resource Path Location Type 'org.springframework.boot.logging.LogLevel' is an unknown property. application.properties /momoyama-web/src/main/resources line 12 Language Servers
あらためて確認すると
- logging.level.sql=DEBUG
- logging.level.org.hibernate.SQL=DEBUG
- logging.level.org.hibernate.orm.jdbc.bind=TRACE
これらは使えるっぽい(上ふたつは多分同じものさす)
改めて設定したら使えた。クラスパスの反映とかがうまくいってないかったのかな?ちょっと様子見。
それはそうとSTSでapplication.properties触ろうとするとかなりの確率でフリーズする。
HHH90000025
HHH90000025: PostgreSQLDialect does not need to be specified explicitly using 'hibernate.dialect' (remove the property setting and it will be selected by default)
spring.jpa.database=POSTGRESQL
spring.datasource.driverClassName=org.postgresql.Driver
がいらなくなったらしい
HHH000489
HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration)
調べ中
これはそういうものとここに書いてある。とりあえず受け入れる。
spring.datasource.hoge
spring.sql.init.hogeに変更