質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Q&A

解決済

2回答

3114閲覧

JavaアプリケーションからMySQL(8.0.12)に接続できません

Taki_Le

総合スコア9

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

0グッド

0クリップ

投稿2018/08/03 05:50

編集2018/08/03 06:46

前提・実現したいこと

Javaで作成したWEBアプリケーションで利用している
MySQLのバージョンを5.6.25から8.0.12にあげたいです。

現在 : Java7、MySQL(5.6.25)、Tomcat7
更新 : Java8、MySQL(8.0.12)、Tomcat7

現在利用している5.6.25をアンインストールした後、8.0.12をインストールしました。
JDBCのバージョンはMySQL5からMySQL8対応のものに変更し起動させると以下のエラーが発生します。

エラーの原因として考えられるものがあればご教示ください。
(設定ファイルで変更が必要なのでしょうか・・?)

発生している問題・エラーメッセージ

ERROR: org.springframework.web.context.ContextLoader - Context initialization failed org.springframework.beans.factory.CannotLoadBeanClassException: Error loading class [com.mysql.cj.jdbc.MysqlConnectionPoolDataSource] for bean with name 'dataSource' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: problem with class file or dependent class; nested exception is java.lang.UnsupportedClassVersionError: com/mysql/cj/jdbc/MysqlConnectionPoolDataSource : Unsupported major.minor version 52.0 (unable to load class com.mysql.cj.jdbc.MysqlConnectionPoolDataSource) at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1394) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineTargetType(AbstractAutowireCapableBeanFactory.java:641) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:609) at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1490) at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1013) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:741) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543) at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:443) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:325) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5118) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5634) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:899) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:875) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652) at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1092) at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1984) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:744) Caused by: java.lang.UnsupportedClassVersionError: com/mysql/cj/jdbc/MysqlConnectionPoolDataSource : Unsupported major.minor version 52.0 (unable to load class com.mysql.cj.jdbc.MysqlConnectionPoolDataSource) at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:3209) at org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:1373) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1861) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1735) at org.springframework.util.ClassUtils.forName(ClassUtils.java:251) at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:401) at org.springframework.beans.factory.support.AbstractBeanFactory.doResolveBeanClass(AbstractBeanFactory.java:1438) at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1383)

該当のソースコード

applicationContext.xml

xml

1<!-- DataSource --> 2 <bean id="dataSource" class="com.mysql.cj.jdbc.MysqlConnectionPoolDataSource" destroy-method="close"> 3<!-- <property name="driverClassName" value="com.mysql.jdbc.Driver" /> --> 4 <property name="driverClassName" value="com.mysql.cj.jdbc.Driver" /> 5 <property name="url" value="jdbc:mysql://sampledb/sample?characterEncoding=utf8&amp;zeroDateTimeBehavior=CONVERT_TO_NULL"/> 6<!-- <property name="url" value="jdbc:mysql://sampledb/sample?characterEncoding=utf8&amp;zeroDateTimeBehavior=convertToNull" /> --> 7 <property name="username" value="sample_db" /> 8 <property name="password" value="sample_pw" /> 9 10 <property name="removeAbandoned" value="true" /> 11 <property name="removeAbandonedTimeout" value="300" /> 12 13 <property name="validationQuery" value="select 1" /> 14 <property name="testOnBorrow" value="true" /> 15 <property name="testOnReturn" value="true" /> 16 </bean>

pom.xmlの一部

xml

1<dependency> 2 <groupId>mysql</groupId> 3 <artifactId>mysql-connector-java</artifactId> 4 <version>8.0.11</version> 5</dependency> 6 7#追記 8<plugin> 9 <groupId>org.apache.maven.plugins</groupId> 10 <artifactId>maven-compiler-plugin</artifactId> 11 <version>3.6.1</version> 12 <configuration> 13 <compilerArgs> 14 <arg>-profile</arg> 15 <arg>compact1</arg> 16 </compilerArgs> 17 <source>1.8</source> 18 <target>1.8</target> 19 </configuration> 20</plugin>

試したこと

  • applicationContext.xmlのデータソース部分とpom.xmlのmysql-connector-javaを変更しました。
  • 認証形式(default_authentication_plugin)をcaching_sha2_passwordからmysql_native_passwordに変更しました。

補足情報(FW/ツールのバージョンなど)

  • 実行環境

CentOS 7.5
Java 1.8.0_171
MySQL 8.0.12
Tomcat 7

  • 開発環境

Eclipse Mars 4.5.2
Maven
Java 1.8.0_172
Springframework 4.3.16
Mybatis 3.2.2

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

namda

2018/08/03 06:09

mySQLサーバは正しく起動していますか?
Taki_Le

2018/08/03 06:13

systemctl status mysqld → active(running) クエリも実行できる状態です。
namda

2018/08/03 06:21 編集

SQLクライアントツールなどでdbサーバにJDBC経由(あるいはODBC経由)で接続できる環境がありますか? (mysql側、JDBC側、java側で原因を分離する必要があります)
Taki_Le

2018/08/03 06:30

MySQL Workbench6.3から接続できることは確認しております。また、tomcatとmysqlは1台のサーバに相乗りしています。
guest

回答2

0

ベストアンサー

MySQL Connector/Jのバージョンを5.1.xの最新にしてみてはどうでしょうか?
5.1.xもMySQL 8.0をサポートしているので使えると思います。
(もしかしたらjdbc urlにuseSSL=falseが必要になるかもしれません。)

それからapplicationContext.xmlのdataSourceのclassとdriverClassNameのvalueを以前の設定に戻してみてください。

<bean id="dataSource" class="{以前の設定}" destroy-method="close"> <property name="driverClassName" value="{以前の設定}" /> //...省略... </bean>

またTomcatにデプロイして動かす前に、ユニットテストか結合テストでデータベースにアクセスするテストコードがあれば、そのテストが通るか確認してみてください。

投稿2018/08/03 08:55

rubytomato

総合スコア1752

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Taki_Le

2018/08/06 09:51

Javaのパス設定とアドバイスいただいた箇所を修正したところ 無事動作いたしました。 ありがとうございました!
guest

0

エラーメッセージにUnsupported major.minor version 52.0と出力されています。
調べてみると、これはJava8を使えということらしいです。
https://qiita.com/cappyzawa/items/195ef8c5c5249ef7e258

MavenやIDEの設定によってJava7でビルドされている可能性があるのではないかと思います。

投稿2018/08/03 06:25

d-yosh

総合スコア270

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Taki_Le

2018/08/03 06:58

ご回答ありがとうございます。 EclipseではMavenを利用しており、pom.xmlでJava8でビルドされるように設定しております。 pom.xmlに記述内容を追記いたしました。 Preferences > Java > Compiler > JDK Compliance の Compiler compliance levelも1.8でした。
d-yosh

2018/08/03 07:07 編集

実行環境のTomcatがJava7を利用している可能性はないですかね?
Taki_Le

2018/08/03 07:25 編集

下記コマンドを実行し確認するとJava8で動作している様です。 --- sh apache-tomcat-7.0.77/bin/version.sh OS Name: Linux OS Version: 3.10.0-514.2.2.el7.centos.plus.x86_64 Architecture: amd64 JVM Version: 1.8.0_171-b11 JVM Vendor: Oracle Corporation
d-yosh

2018/08/06 00:15

問題なさそうですね・・・。 念のためですが、記載いただいたコマンドは、実際にTomcatを起動するユーザで実行してますか? TomcatはユーザのJAVA_HOMEを利用しようとするはずなので。 また、systemctl を利用して起動しているのであれば、そちらにも環境変数としてJAVA_HOMEが定義されている可能性もあります。 これらも問題ないのであれば、私にはわからないかもです。すみません。
Taki_Le

2018/08/06 09:50

本日無事解決いたしました。 ありがとうございました! JavaをRPMでインストールした場合はJAVA_HOMEの設定を"/usr/java/default"にする必要があるようですが、個別で設定していたことが原因かもしれません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問