JDBC Version Issue

原在 Windows 10 + Java 8u144 + NetBeans 8.2 x64 + JDBC for MSSQL 7 jre8 中,DB Connection 是沒有問題的。

(1) 後來環境換到 Mac Mojave 10.14.2 + Java 11 + NetBeans 10 mac + JDBC for MSSQL 7 jre10 中,雖然 DB Connection 沒問題,但無法利用 Plug-In 經由 DB 產生 JPA 的 Entity。

當時 NetBeans 10 mac 的 Java EE 相關 Plug-In 是手動安裝,有可能是相容問題,於是將 NetBeans 退至 8.2 Java EE 的版本。

後來的環境變成 Mac Mojave 10.14.2 + Java 11 + NetBeans 8.2 mac。但 NetBeans 啟動完,把 Startup 頁面關掉後,竟無法開啟 Projects/Services 相關視窗。於是又把 Java 降回 8u144。

為什麼 Java 要選 8u144?因為要跟 GlassFish 5 相容。GlassFish 5 我目前試,只有 8u144 能成功執行。

後來的環境變成 Mac Mojave 10.14.2 + Java 8u144 + NetBeans 8.2 mac + JDBC for MSSQL 7 jre8。Projects/Services 視窗已可成功開啟。但 DB 的 Connection 還是不會過。

錯誤訊息如下。

--------
Cannot establish a connection to jdbc:sqlserver://[IP]\
SQLEXPRESS:1433;databaseName=ACS using com.microsoft.sqlserver.jdbc.SQLServerDriver (連接到主機 [IP] (連接埠 1433) 的 TCP/IP 連接已經失敗。錯誤: "null。確認連接屬性。確認 SQL Server 執行個體是否在主機上執行並接受在通訊埠的 TCP/IP 連接。確認防火牆未封鎖通訊埠的 TCP 連接。"。)
--------
 
網路上查,多半說的是 DB Server 要將 TCP/IP 開啟。但之前都已在開發,也請同事確認過是有開啟的。所以一頭霧水,實在無法理解是哪個環節出問題。 
 
東踹西踹,就是不會過。想到,在 Java 11 + NetBeans 10 中是會過的。現在 Java 為 8u144,不管三七二十一,先把 NetBeans 10 執行起來再來看看。

現在的環境為 Mac Mojave 10.14.2 + Java 8u144 + NetBeans 10 + JDBC for MSSQL 7 jre10。
出現了 SQLServerDriver has been compiled by a more recent version of the Java Runtime (class file version 54.0), this version of the Java Runtime only recognizes class file versions up to 52.0

意思就是 JDBC for MSSQL 7 jre10 的 Java Class 檔版本太新,Java 8u144 無法處理。
 
於是把環境改為 Mac Mojave 10.14.2 + Java 8u144 + NetBeans 10 + JDBC for MSSQL 7 jre8。
這時嘗試進行資料庫連線就出現了上面 TCP/IP 連接已經失敗的問題。
 
到了這邊已快手足無策。本來想說用 Eclipse 寫個小程式測試一下 JDBC 到底有沒有問題。突然靈機一動,降 JDBC 的版本試試。
 
最後環境來到 Mac Mojave 10.14.2 + Java 8u144 + NetBeans 8.2 + JDBC for MSSQL 6.4 jre8。
很幸運的,Connection Succeeded.
 
以上就是為了 GlassFish 5, JAX-RS + JPA,開發環境從 Windows 改為 Mac 的奮鬥歷程。

留言

這個網誌中的熱門文章

泰文子音與字形之間的變化

AUTOMAXX UP-5HX 使用心得