2011-11-04 205 views
0

我正在尋找任何可能幫助我解決目前問題的想法。我繼承了一個讀取Excel文件的JAVA應用程序,創建一個包含SQL代碼的文本文件並連接到Sybase DB以更新它。它使用SweetDEV作爲db連接器,並且在Mac上完美運行。Java應用程序在Mac上可用,但在Windows上不可用

問題是,它無法連接到數據庫在Windows上,報告的用戶名和密碼提供的是不正確的。這是不正確的,因爲它們在Mac上使用的方式相同,並且工作正常。我曾嘗試使用另一個應用程序連接到使用這對Sybase數據庫,它的工作。

我連接到服務器使用其IP不是一個別名 - 我自己也嘗試用別名,但沒有奏效。

我已經使用了一個線程,提示該問題可能與所使用的編碼連接,並建議將其添加到連接字符串中:「?charset = iso_1」。從一開始就已經有了。所以這不是一個編碼問題。

我創建了一個簡單的類連接到數據庫和檢索使用其他驅動程序(com.sybase.jdbc3.jdbc.SybDriver)服務器的元數據和它的作品。我真的不想重做整個應用程序,我很困惑它爲什麼在一個操作系統上運行,而不是另一個。

如果任何人有任何可能導致這種情況的想法,請分享。我完全被這一切困惑,並且我已經沒有想法了。

由於提前,

若昂

PS:這裏是它返回錯誤 - 我又知道這是不是一個用戶名/密碼的問題,因爲我可以用它們來連接。

[10/4/2011 16:29:37] com.ideo.sweetdev.core.service.ServiceManager INFO The service [CONFIGXML_SERVICE] with class name [com.ideo.sweetdev.data.service.configxml.ConfigXmlService] was successfully registered. 
[10/4/2011 16:29:37] com.ideo.sweetdev.core.service.ServiceManager INFO The service [QUERYCALLER_SERVICE] with class name [com.ideo.sweetdev.data.service.datacaller.querycaller.QueryCallerService] was successfully registered. 
[10/4/2011 16:29:37] com.ideo.sweetdev.data.service.datasource.DataSourceService ERROR An error append while initializing the DataSource.com.ideo.sweetdev.core.exception.TechnicalException: An error append while initializing the DataSource. 
at com.ideo.sweetdev.data.service.datasource.DataSourceService.initDataSource(DataSourceService.java:437) 
at com.ideo.sweetdev.data.service.datasource.DataSourceService.retrievePool(DataSourceService.java:218) 
at com.ideo.sweetdev.data.service.datasource.DataSourceService.configure(DataSourceService.java:174) 
at com.ideo.sweetdev.core.service.ServiceManager.instantiateService(ServiceManager.java:424) 
at com.ideo.sweetdev.core.service.ServiceManager.getServiceByName(ServiceManager.java:508) 
at com.ideo.sweetdev.core.service.ServiceManager.getService(ServiceManager.java:285) 
at com.ideo.sweetdev.data.service.datasource.DataSourceHelper.getDBService(DataSourceHelper.java:41) 
at com.ideo.sweetdev.data.service.datacaller.querycaller.QueryCallerService.getQueryCaller(QueryCallerService.java:108) 
at com.ideo.sweetdev.data.service.datacaller.querycaller.QueryCallerService.getQueryCaller(QueryCallerService.java:133) 
at com.ideo.sweetdev.data.service.datacaller.querycaller.QueryCallerHelper.getQueryCaller(QueryCallerHelper.java:59) 
at connexionSQL.ExecutionFichierRequetes.<init>(ExecutionFichierRequetes.java:41) 
at interfaces.ChoixEnvironnements$3.run(ChoixEnvironnements.java:149) 
java.sql.SQLException: JZ00L: Echec de la connexion. Examinez les SQLWarnings associ?es ? cette exception pour la ou les raisons suivantes : 
at com.sybase.jdbc3.jdbc.ErrorMessage.raiseError(Unknown Source) 

... 
+0

也許錯誤的操作系統沒有你期望它擁有的庫? – ManseUK

+0

ManseUK,我有應用程序使用的源代碼和所有庫。我甚至用一個用JAVA開發的同事的PC運行應用程序,它也沒有工作。也許我不明白你的意思,你能否詳細說明一下? –

+0

是否有可能數據庫不接受來自Windows主機的用戶/密碼組合?也許服務器不僅檢查用戶和密碼,而且還檢查用戶,密碼和客戶端主機。 –

回答

0

它可能是一個類路徑問題?在Linux/MacOS上,類路徑的定義稍有不同,例如

java -cp jar1.jar:jar2.jar: 

在Windows上冒號變成了分號。

java -cp jar1.jar;jar2.jar; 

這可能是問題嗎?

或者,您是否可以通過工具竊聽連接? Wireshark的?只是爲了比較一下你的Java應用程序在一種情況下發送的內容?

也可以在你的MacOS(好OS),並點運行在Windows分貝?

+0

嗨djob,感謝您的意見。我懷疑這是一個類路徑問題,但我會重新檢查。不幸的是,我不能使用wireshark這樣的東西:(數據庫不在Windows或Mac中,而是在運行某些* nix操作系統的服務器上。 –

+0

您仍然可以在本地運行wireshark以比較正在發送的內容,或者使用代理如tcpmon或查爾斯網絡代理 –

+0

嗨djob,我會看看如果我可以使用任何這些,並會讓你張貼。謝謝。 –

0

您是否嘗試過設置由純ASCII組成的用戶和密碼進行測試?所以確實排除了編碼問題。 (不幸的是編碼發生在幾層。)

對不起,你已經排除。

錯誤的數據庫/方案名稱?不見得。

對SybDriver使用詳細選項?

+0

嗨喬普,是的,它不是一個編碼問題,也不是一個錯誤的數據庫/方案名稱。無論如何,如果我使用SQLAdvantage。Thx,則可以在Mac和Windows中使用相同的參數。 –

相關問題