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…’)

错误原因:未明。
解决方法:在项目属性中更改配置,如下图,JavaEE 项目常见错误汇总_第1张图片

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: 违反协议

错误原因:
解决方法:


微信公众号:技术很有趣
微信公众号

头条号 技术很有趣:

你可能感兴趣的:(Java,Java,javaee,后端)