JavaEE 項目常見錯誤彙總

Windows 10 環境下,MyEclipse 10, JDK 1.7 32位,Tomcat 6 32位,Oracle版本:oracle 11g r2。


1. 嚴重: StandardServer.await: create[8005]

原因:端口號衝突
解決:
(1)方法一
使用命令netstat -ano找到佔據端口8005的進程號,再用命令taskkill /pid xxxx殺死對應進程xxxx。
(2)方法二
打開任務管理器,看看開發工具eclipse下是否啓動了兩個相同進程,直接結束進程,重啓eclipse和項目。
(3)方法三
修改Tomcat配置文件server.xml中的端口號。

修改8080端口爲其它端口號。

注意事項:這個錯誤與eclipse和操作系統位數沒關係。

2. Can’t load AMD 64-bit .dll on a IA 32-bit’ platform

原因:Tomcat 和 JDK 的位數不一致。理論上64bit能夠兼容32bit tomcat。
解決:使得Tomcat 和 JDK 位數相同。

3. Tomcat加載項目時,進度條一直顯示launching delegate…停留在27%

原因:未明。
解決:重啓MyEclipse,然後重新運行項目。

4. Cause: java.sql.SQLException: OALL8 處於不一致狀態

原因:未明。
解決:將jar包換成ojdbc14 10.2.0.5.0,然後重新運行項目。

5.java.lang.UnsatisfiedLinkError: Can not load library …

原因:對應的DLL文件沒有加載到tomcat中。
解決:手動將項目中的DDL文件複製到對應的tomcat目錄下。

6.Error starting endpoint

原因:Tomcat端口和其它進程端口衝突。
解決:殺死其它進程。

7. Error querying database. Cause: java.sql.SQLException: ORA-01722: 無效數字

原因——本質原因是入參和數據庫表字段數據類型不匹配,報錯可能存在以下兩種情況:

(1)可能一:入參數據類型不對(即查詢條件、sql語句有問題),數據庫表字段是number類型而入參包含了字符。
(2)可能二:sql語句沒問題。例如:

select count(*) from user t where t.pro_id !=4099; // 報錯:無效數字 
select * from user t where t.pro_id !=4099; // 沒錯

oracle數據庫的 sql 語句中=是用數字比較的,因此 oracle 會自動把字符串類型轉換成數字進行比較。然而,已有數據是varchar等字符串類型,表記錄對應的字段中現存數據既有數字也有字符,導致比較雙方數據類型無法匹配。

8.網絡相關錯誤

  • Caused by: java.net.ConnectException: Connection timed out: connect
  • Caused by: oracle.net.ns.NetException: The Network Adapter could not establish the connection
  • java.net.ConnectException: Connection refused: connect
    分析思路: 網絡沒問題,網卡也沒有問題,數據庫使用plsql也可以正常連接。在eclipse關閉其它項目後,仍然會出現該問題,但是控制檯日誌會出現和其它已關閉項目相關的錯誤。
    原因: 不確定。
    解決: 刪除其它在Tomcat webapp目錄下暫時不運行的項目。
  • 登錄網站後,一點某個菜單執行查詢就提示類似的“會話超時,退出”字樣。
    原因:網站的訪問地址有問題,可能多了斜槓“/”等字符。
    解決:修改網站訪問地址即可。

9.java.lang.OutOfMemoryError: PermGen space

原因: 分配給Tomcat的內存空間不夠。
解決: 給Tomcat增加內存或者減少運行在Tomcat中的項目。

10. Cause: java.sql.SQLException: ORA-01789: 查詢塊具有不正確的結果列數\n\n; bad SQL grammar [];

mybatis——union 需要返回相同列數
java.sql.SQLException: 無效的列類型

數據類型與數據庫表的不一致

11. load ‘EncryptJNI’ failed.: Native Library D:\Java\jdk1.6.0_06\bin\EncryptJNI.dll already loaded in another classloader

待解決

12. ERROR] HeartbeatTask run() method error: Connection refused: connect

待解決

13. [See nested exception: java.sql.SQLSyntaxErrorException: ORA-00942: 表或視圖不存在

待解決

14、 瀏覽器顯示內容的中文出現亂碼

解決方法:將eclipse/myeclipse首選項中workspace的字符集改成GBK的,再重新運行項目。

15、 Unsupported major.minor version 51.0

錯誤原因:現有項目被jdk 1.7(major version 51.0)編譯過的java文件不能夠運行在當前更低JRE(4,5,6)版本的項目環境,即導入的項目被更高版本的jdk編譯過了。
解決方法:

  • 方法一: 重新編譯該項目java文件
  • 方法二:將當前項目jdk環境換成1.7(親測有效)

參考鏈接:https://javarevisited.blogspot.com/2015/08/how-to-solve-unsupported-majorminor-version-51-java.html#axzz5pKbnt2pR

16、 Multiple Contexts have a path of "/xxxx"問題解決

錯誤原因:server.xml 中多個context的path屬性相同。
解決方法修改或者刪除一個即可。

17、 The processing instruction target matching “[xX][mM][lL]” is not allowed.

錯誤原因:xml配置文件多了tab空格。
解決方法:去除即可。

18、 警告: StandardServer.await: Invalid command ‘’ received

錯誤原因:eclipse/IDEA 在tomcat中運行多個程序導致的端口衝突。
解決方法:修改相應的端口號即可。

19、 Eclipse hierarchy of the type is inconsistent

錯誤原因:繼承的類或者所實現的接口使用了其他的jar包,而當前項目卻沒有引入該jar包。
解決方法:引入對應jar包。

20、load ‘EncryptJNI’ failed.: Native Library D:\Java\jdk1.6.0_06\bin\EncryptJNI.dll already loaded in another classloader ERROR] HeartbeatTask run() method error: Connection refused: connect

錯誤原因:未明。

21、ORA-01722:無效數字 SQLSTMT: OPEN C_DYNAMIC_SQL

錯誤原因:數據庫中存在異常數據,這裏即是某個字段數據的值同時存在字符串型數字和字符串,因此當前端傳值,比如“555”,查詢數據庫,無法和“abc”作比較,此時就無法正常返回。
解決方法:刪除字符串類型數據。
補充:詳情參看第7條錯誤。

22、Access restriction: The constructor ‘BASE64Decoder()’ is not API (restriction on required library ‘D…’)

錯誤原因:未明。
解決方法:在項目屬性中更改配置,如下圖,在這裏插入圖片描述

23、 Error querying database. Cause: java.sql.SQLException: ORA-00923: 未找到要求的 FROM 關鍵字

錯誤原因:SQL語法問題,工程出現亂碼,編碼方式不對。
解決方法:看日誌,找到對應亂碼位置,發現sql語句是在Java代碼裏面拼接的。調整workspace的編碼方式即可。

24、uncategorized SQLException for SQL []; SQL state [null]; error code [17401]; 違反協議; nested exception is java.sql.SQLException: 違反協議

錯誤原因:
解決方法:


微信公衆號:技術很有趣
微信公衆號

頭條號 技術很有趣:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章