Closed shinsuke-mat closed 4 years ago
javaの機能として禁止になったので,実装を直すしかない. 幸いテストの一部の問題かつ,自前クラスローダへのリフレクションの問題である. よって自前クラスローダ(MemoryClassLoader)に,ロード済みクラス一覧の確認APIを作ればよい.
上記間違ってる. x 自前クラスローダへのリフレクションの問題である. o java.lang.ClassLoaderへのリフレクションの問題である.
どうすんねんこれ. ClassLoaderのテストはとても難しい.
https://stackoverflow.com/questions/56039341/get-declared-fields-of-java-lang-reflect-fields-in-jdk12 リフレクションを使いつつ,これのhackを使う. cons: 12.0.1以降でも動く保証がない. セキュリティの問題を抱える.
リフレクションを使わないように変更する. 理想はこれ. cons: やり方が思いつかない
当該テストを削除する. cons: 当該テストはそれなりに重要で,残しておきたい
jdk12以降だけ,当該テストをスキップする.
GitHubActionsによるマトリックステストで発見したバグ. https://github.com/hnymA/kGenProg/pull/3
jdk12以降でjavaネイティブクラスへのreflectionが禁止になった. https://stackoverflow.com/questions/56039341/get-declared-fields-of-java-lang-reflect-fields-in-jdk12
MemoryClassLoaderTestではクラスローダがロードしたクラス一覧のテストを行っているが, クラス一覧の取得に以下リフレクションを使っている.
このリフレクションに失敗する.