前提・実現したいこと
学校のPCの環境下から、eclispse上のjavaファイルからmysqlにあるデータベースへ接続したいのですが、
"java.lang.UnsupportedClassVersionError: com/mysql/jdbc/Driver : Unsupported major.minor version 52.0"というエラーが出てしまい、接続できません。
発生している問題・エラーメッセージ
以下のエラーメッセージは自宅環境下で無理やり起こしたものなので、もしかしたら細かいエラーの内容は違うかもしれませんが、大方同じようなエラーだと思います。
Exception in thread "main" java.lang.UnsupportedClassVersionError: com/mysql/jdbc/Driver : Unsupported major.minor version 52.0 at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(ClassLoader.java:637) at java.lang.ClassLoader.defineClass(ClassLoader.java:621) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) at java.net.URLClassLoader.access$000(URLClassLoader.java:58) at java.net.URLClassLoader$1.run(URLClassLoader.java:197) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:247) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:171) at lessonA.DBConnect.getConnection(DBConnect.java:55) at lessonA.DBConnect.main(DBConnect.java:48)
該当のソースコード
色々と試していたので、コメントアウトが多く申し訳ございません。
JAVA
1package lessonA; 2 3import java.sql.Connection; 4import java.sql.DriverManager; 5import java.sql.SQLException; 6 7public class DBConnect { 8 public static void main(String[] args) { 9 10 /*Connection conn = null; 11 String url = "jdbc:mysql://localhost:3306/test_db"; 12 String user = "root"; 13 String password = "root"; 14 15 try { 16 conn = DriverManager.getConnection(url, user, password); 17 18 // データベースに対する処理 19 //System.out.print("DB接続成功!"); 20 21 Statement stmt = conn.createStatement(); 22 String sql = "SELECT * FROM test_table"; 23 ResultSet rs = stmt.executeQuery(sql); 24 25 while (rs.next()) { 26 int id = rs.getInt("id"); 27 String name = rs.getString("name"); 28 System.out.println("id:" + id + " name:" + name); 29 } 30 31 rs.close(); 32 stmt.close();*/ 33 34 /*} catch (SQLException e) { 35 // 例外処理 36 e.printStackTrace(); 37 } finally { 38 try { 39 if (conn != null) { 40 conn.close(); 41 } 42 } catch (SQLException e) { 43 // 例外処理 44 } 45 }*/ 46 47 getConnection(); 48 49 } 50 51 public static Connection getConnection(){ 52 Connection con = null; // 初期化 53 try{ 54 Class.forName("com.mysql.jdbc.Driver"); 55 con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test_db","root","root"); 56 System.out.println("DB接続成功!!!"); 57 return con; 58 }catch(ClassNotFoundException e){ 59 throw new IllegalMonitorStateException(); // クラスがなかった時の例外処理 60 } catch (SQLException e) { 61 throw new IllegalMonitorStateException(); // SQLでエラーが起きた時の例外処理 62 } 63 } 64}
試したこと
調べていると、「eclipse上のjavaファイルの実行環境が統一されていない」もしくは、「java8以上でないと実行できない」というような指摘が多かったので、javaのバージョンを変えたり、eclipse上のビルドパスや実行構成でJREシステムライブラリーのバージョンを変えたりと、色々と試しました。
補足情報(FW/ツールのバージョンなど)
実行できないのは学校での環境下のみであって、自宅のPCでは問題なく接続し、データベースから値の取得と表示はできています。
学校環境: Tomcat 5.5 (Java 1.6)、mySQL 最新、mysql-connector(jarファイル) 最新
自宅環境: Tomcat 9.0 (Java 10)、mySQL 最新、mysql-connector(jarファイル) 最新
自宅環境下で、学校でのエラーの原因を突き止めるため、eclipseのプロジェクトの実行構成からプロジェクト実行環境をjava6に変えたところ、上記エラーが出ました。(当たり前ですが・・・)
その後、ビルドパスの方のJREシステムライブラリのバージョンもjava6に変えました。
それでもやはり上記エラーが出るので、根本的な原因は何なのか突き止められず困っています。
他にバージョンの設定などをする項目があったりしますか?
それともやはり、javaのバージョンが8以上でないと、mySQLとの接続はできないのでしょうか?
(さすがにそんなことはないと思っているのですが・・・)
学校側に用意された環境なので、できればこのままの環境でなんとかmySQLと接続したいのですが、思い当たる節がありましたら教えていただきたいです。m(_ _)m
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/14 05:07
退会済みユーザー
2021/02/14 06:03 編集
2021/02/15 22:22
退会済みユーザー
2021/02/16 12:01 編集
2021/02/21 08:21 編集
退会済みユーザー
2021/02/21 08:52