Java 21がリリースされたので、自前のプログラムをJava 21に変更してみる。
コードの変更部分
Java 21に変更したら下記のコードが非推奨になっていた。
new Locale(locale)
new URL(referer)
それぞれ下記の通り修正した。
Locale.of(locale)
URI.create(referer).toURL()
newするようなコードは今後もなくなっていくのだろうか。個人的には変更後のコードの方が好きだ。
2023/10/17 追記
pom.xmlに下記設定を追記した。
-proc:full
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
<configuration>
<compilerArgs>
<arg>-parameters</arg>
<arg>-proc:full</arg>
</compilerArgs>
</configuration>
</plugin>
-XX:+EnableDynamicAgentLoading
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.1.2</version>
<configuration>
<reuseForks>false</reuseForks>
<argLine>${argLine} -XX:+EnableDynamicAgentLoading -Dcatalina.base=${project.build.directory}</argLine>
</configuration>
</plugin>
2023/10/18 追記
Java 21にコンパイルの設定を変更すると、なぜか下記11行目ががコンパイルエラーになる。(一部抜粋)
import static org.mockito.Mockito.*;
@ExtendWith(MockitoExtension.class)
class NovelProcessTest {
@Mock
private MessageSourceAccessor messages;
@Test
void testExecute() {
when(messages.getMessage(anyString())).thenReturn(
下記のように修正するとコンパイルエラーは解消する。理由はわからない。
import static org.mockito.Mockito.*;
@ExtendWith(MockitoExtension.class)
class NovelProcessTest {
@Mock
private MessageSourceAccessor messages;
@Test
void testExecute() {
String msg = messages.getMessage(anyString());
when(msg).thenReturn(
下記でもコンパイルエラーは解消するので、whenがメソッドの最初にあるのが駄目なのだろうか。
@Test
void testExecute() {
String msg = "";
when(messages.getMessage(anyString())).thenReturn(