亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

java.lang.ClassCastException:無法將類 com.mysql

java.lang.ClassCastException:無法將類 com.mysql

德瑪西亞99 2023-09-06 17:04:00
我正在嘗試為我的學校項目設置微服務。我正在使用java spring boot框架。但是當我編譯并運行數據庫連接時,它給了我錯誤: java.lang.ClassCastException: class com.mysql.cj.jdbc.ConnectionImpl 無法轉換為 class com.hrms.employees.db.Connection (com.mysql. cj.jdbc.ConnectionImpl 和 com.hrms.employees.db.Connection 位于加載程序“app”的未命名模塊中)package com.hrms.employees.db;import java.sql.DriverManager;import java.sql.SQLException;public class Connection {    private static Connection conn;    static{        try {            Class.forName("com.mysql.jdbc.Driver");            conn = (Connection) DriverManager.getConnection("jdbc:mysql://itsatest2.c45g5gg8tx2m.ap-southeast-1.rds.amazonaws.com","admin","zx55774463");            System.out.println("connected");        }        catch(ClassNotFoundException | SQLException e){            System.out.println(e.getMessage());        }    }    public static Connection getConnection(){        return conn;    }}Grade.build 中的依賴項dependencies {    implementation 'org.springframework.boot:spring-boot-starter-web'    testImplementation 'org.springframework.boot:spring-boot-starter-test'    compile group: 'mysql', name: 'mysql-connector-java', version: '8.0.15'}我期望輸出字符串為“connected”
查看完整描述

1 回答

?
有只小跳蛙

TA貢獻1824條經驗 獲得超8個贊

問題是你的類被調用Connection,而DriverManager.getConnection()返回一個java.sql.Connection. 當使用 MySQL Connector/J 時,實際返回的實現是com.mysql.cj.jdbc.ConnectionImpl,這顯然不是您的類的實例com.hrms.employees.db.Connection,因此轉換失敗。

您要么需要重命名您的類,要么需要將變量定義為private static java.sql.Connection conn并刪除強制轉換(因此使用conn = DriverManager.getConnection)。

順便說一句,對數據庫連接使用靜態變量幾乎總是錯誤的解決方案,在長時間運行的應用程序中,當連接關閉或丟失時,它可能會導致問題,而在高度并發的應用程序中,這會導致在多個線程之間共享單個連接這可能會導致競爭條件或其他難以診斷的錯誤。

更好的解決方案是使用連接池數據源,例如 Apache DBCP、c3p0 或 HikariCP,并僅為一個工作單元獲取連接,然后將其關閉(這會將其返回到池中以供重用)。


查看完整回答
反對 回復 2023-09-06
  • 1 回答
  • 0 關注
  • 149 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號