質問: Java初心者です。 仕事で必要になり、勉強しています。 家で環境を整えようとしたのですが、こちらのエラーとなりました。 設定には次のように書いています。 localhost:8080にアクセスすると次のように表示されます。 取り急ぎ、コンソールにでるエラーを消したいです。 エラー文をぐぐり、設定ファイルを編集したのですが、エラー文をなくすことができません。 なにか設定ファイルを編集するか もしくは、これからファイルを作成していったら自然と消えるもので気にしなくてもよいかもしれません。 経験者の知見をお聞かせ願えないでしょうか Spring tool suite4 java11 mysql8 spring boot 2.0.6.RELEAS database名 bbs src/main/resources/application.properties ``` spring.datasource.driverClassName=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/bbs?useSSL=false spring.datasource.username=userName spring.datasource.password=****** WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by org.springframework.cglib.core.ReflectUtils$1 (file:/Users/yoshi/.m2/repository/org/springframework/spring-core/5.0.10.RELEASE/spring-core-5.0.10.RELEASE.jar) to method java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain) WARNING: Please consider reporting this to the maintainers of org.springframework.cglib.core.ReflectUtils$1 WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release ```
回答: Spring Boot 2.0系はJava 11に正式に対応していないため、ご質問の警告メッセージが表示されるようです。 ただ、リフレクションを使用していることに対する警告なので、そのままでも実害はないと思っています。 なお、Spring BootがJava 11に正式に対応するのはバージョン2.1からになりますが、まだGA版はリリースされておらず、現在の最新バージョンは2.1.0.RC1で、GA版は今月末のリリースのようです。 ご質問の警告メッセージを消したいという件ですが、対応方法として2つ考えられます。 1つ目は、Javaのバージョンを1.8系に落とす方法です。こちらがおすすめですが、Java 11の勉強も兼ねているということであれば、2つ目の方法をお試しください。 **2018/10/23 追記** Java 11の環境でJVMのオプションに`--illegal-access=deny`を付けると、逆にアプリケーションが起動しなくなります。謹んで訂正させて頂きます。 ~~2つ目は、警告メッセージの出力を抑制するオプションをJVMに指定する方法です。 指定するオプションと方法は下記のとおりです。~~ ~~--illegal-access=deny~~ ~~このオプションを(STSは使ったことが無いのでEclipse Photonで説明します)、アプリケーション名を右クリックしてコンテキストメニューから「Run As」→「Run Configurations...」→「Spring Boot App(*)」→「Argumentsタブ」→「VM Arguments」の欄に記入します。~~ !イメージ説明 ~~"Spring Boot App"のところは、環境によって違うかもしれませんので読み替えてください。~~