2010年8月27日 星期五

signer information does not match signer information of other classes in the same package

原環境為Websphere 6.0.0.1 + SQL 2000,後來資料庫升級到SQL 2005,得調整WAS的相關設定,調整的當中陸續遭遇一些錯誤,相關調整步驟就不在這邊說明囉
一開始我更換JDBC Driver 1.2後,log出現如下錯誤
class "com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement"'s signer information does not match signer information of other classes in the same package

當時不知怎麼解,上網查到似乎是版本衝突,也沒說怎麼解,加上我跟JAVA不熟,廠商又推說重灌WAS就可了,正式站最好隨隨便便重灌啦!所以我就暫時先放棄了
過了一段時間後,想說試試看原本的Driver能不能連SQL 2005,結果一試居然可以,新增修改刪除功能似乎沒有問題,不過後來又出現如下錯誤

[IBM][SQLServer JDBC Driver][SQLServer]內送的表格式資料流 (TDS) 遠端程序呼叫 (RPC) 通訊協定資料流不正確。參數 4 (""): 資料類型 0x38 是未知的。
KB915834裡面有提到這錯誤,得裝Hotfix或是去修改程式碼,還挺麻煩的,那我想到直接用JDBC Driver 1.3試試,結果又出現如下的錯誤

java.lang.UnsupportedClassVersionError: com/microsoft/sqlserver/jdbc/SQLServerConnectionPoolDataSource (Unsupported major.minor version 49.0)
上網查到這好像是JDK版本不符的關係,於是我只好在降回1.2版,這時奇怪的事情發生了,出現了一個跟之前很像又不太像的錯誤,如下
class "com.microsoft.sqlserver.jdbc.SQLServerConnectionPoolDataSource"'s signer information does not match signer information of other classes in the same package
Microsoft JDBC Driver Team Blog 查到一模一樣的問題喔,裡面建議upgrade到WAS 6.1就可以解決,要不然另一個解決辦法,就是把JDBC Driver 1.2安裝到另一個目錄之下,不要放到${WAS_LIBS_DIR}下面,然後再去JDBC provider裡的類別路徑指向1.2所在的目錄即可

我一試放到不同的目錄看看,還真的可以喔,錯誤不再出現,我試著又把Driver放一起,錯誤又重現囉,不過錯誤訊息變成一開始我遇到的那個,很神奇吧

0 意見:

張貼留言