JAVA BUG记录 不断整理添加。。。。

48 篇文章 0 订阅
7 篇文章 0 订阅

错误启动TOMCAT时: 代理抛出异常错误: java.rmi.server.ExportException: Port already in use: 1099; nested exception is: java.net.BindException: Address already in use: JVM_Bind

原因:端口1099 被占用

解决方法: 在windows下终端输入:netstat -aon|findstr 1099 找出占用1099端口的进程

                   然后使用命令:taskkill -f -pid 3172 杀死对应进程    

 

WEB项目进入某个页面出现404错误

原因:springmvc 当中为找到对应页面路径  或者对应的controller未交给springmvc 进行管理

解决办法:1 检查对应的controller  是否添加@controller 和@requestMapping 注解

                 2 检查注解当中的路径是否正确

                 3 检查当前controller 是否交给springMVC进行管理  在spring配置文件xml 当中查看 @controller的扫描路径是否包含在内 以及查看@controller扫描规则

 

 

添加时间:2018.7

启动项目时报错:Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/configuration/Configuration 

原因:在项目编译时找不到对应的类。 项目当中没有引入commons-configuration-1.6.jar这个JAR包

处理方式:检查对应jar包是否包含在应用程序的lib文件夹中,您可能通过ant或maven打包离开它。下一个可能的原因可能是jar被损坏了。尝试反编译和检查(尽管这是非常罕见的)。

记住所有的classNotFound异常仅仅意味着程序由于任何原因无法找到对应的类。将它添加到lib/类路径中就好了。

同时记住常用的4个commons 公共包:commons-configuration-1.6.jar commm-logging.jar,common-lang.jar和common-collection.jar。

四个包下载地址:http://maven.outofmemory.cn/  在MAVEN中央仓库里面直接下载。

 

启动项目时报错: java.sql.SQLException: Access denied for user 'pdpms'@'localhost' (using password: YES)

错误原因:数据库连接失败,数据库连接信息有误

处理方式:检查数据库账号 密码是否正确        检查数据库地址端口是否正确

                 检查连接的数据库名称是否正确      检查数据库是否开启远程访问权限     检查是否可以Ping通远程地址

 

启动项目时报错:java.net.ConnectException: Connection timed out: connect   

错误原因:数据库连接超时     无法连接到对应IP地址上的数据库 

处理方式:检查对应ip地址上是否安装对应数据库,检查ip地址是否变更了。在公司进行开发的时候,电脑是自动获取IP地址,因此IP地址可能会发生变更,建议将数据库机器的ip地址设置为静态,或者使用机器名进行连接。

 

数据库连接报错:com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zone value '???ú±ê×??±??' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.

错误原因:mysql  连接驱动包版本较高   当前使用的是   数据库和系统时区有差异所造成。

处理方式:在jdbc连接的url后面加上serverTimezone=GMT即可解决问题,如果需要使用gmt+8时区,需要写成GMT%2B8,否则会被解析为空。再一个解决办法就是使用低版本的MySQL jdbc驱动,5.1.28不会存在时区的问题。

 

Springboot 项目报错404  扫描不到对应的controller service dao

问题原因:SpringBoot 官方的推荐是:需要扫描的包应该和启动类同级或者在启动类下面。如下图

在上图中就无法扫描到controller 但是可以扫描到其他和启动类:DemoApplication  同级的包。

处理方式:1  将controller 移动到和controller同级。

                  2 在controller类上将扫描注解换成:@SpringBootApplication

                     或者使用@Controller @EnableAutoConfiguration @ComponentScan 这三个可以了

@Controller和@EnableAutoConfiguration没有扫描注解的功能,而@ComponentScan是springboot专门用来扫描@Component, @Service, @Repository, @Controller等注解的注解。

 

SSM项目报错:

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):

错误原因:mybatis 配置文件信息有误

处理方式:检查对应的mybatis的mapper配置文件信息。

     检查mapper.xml文件所在的package名称是否和interface对应的package名称一一对应。

     检查mapper.xml文件的namespace是否和xml文件的package名称一一对应。

     检查mapper.xml文件的方法名称能否和接口里面的方法名称对应上。

     检查mybatis 是否扫描到对应的mapper.xml文件。

     检查mybatis配置文件的配置信息是否正确,在配置多数据源时可能将数据源写错

 

【spring整合quartz定时任务】Spring @Autowired 注入service或者dao为null

问题原因:quartz 当中的job没有进行实例化 没有被spring自动注入进行管理  同

处理方式:

第一步:创建一个类继承 AdaptableJobFactory 或者 SpringBeanJobFactory 

public class JobFactory extends AdaptableJobFactory {
    @Autowired
    private AutowireCapableBeanFactory capableBeanFactory;
    @Override
    protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception {
        //调用父类的方法
        Object jobInstance = super.createJobInstance(bundle);
        //进行注入
        capableBeanFactory.autowireBean(jobInstance);
        return jobInstance;
    }
}

PS:继承SpringBeanJobFactory的话 代码块和上面一样。

第二步在xml 当中进行配置

<bean id="bmJobFactory" class="com.jy.task.job.bmTask.JobFactory"></bean>
<bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="jobFactory" ref="bmJobFactory"></property>
</bean>

问题就搞定了.

添加时间:2018.08

return null 引发的空指针问题

问题原因:方法的返回类型为集合时,直接返回NULL   导致在判断list 是否为null时一直报空指针异常

list空值判断 list.size()>0 && list!=null     这里调用size()出现空指针异常。

双重判断的原因:

list == null 说明List没有初始化 或者赋值为了null,说明list内没有数据
但是 当list 初始化后 list != null但list内依然没有数据
1、如果直接判断size>0,如果list == null,那程序报空指针的错
2、如果只判断list == null,那list内的数据还是可能为空

解决办法1:在返回时直接声明   return new ArrayList();

解决办法2:更换判断位置    list!=null && list.size()>0;

 

WEB项目打开某个JSP界面报错:Could not complete request
org.apache.jasper.JasperException:。。。。。。。

问题原因:JSP界面头部的引入信息输入有误,例如:page当中UTF-8写成了小写的,contentType的属性当中有多的空格(我这里就是有多的空格报错的) 引入对应的taglib信息有误等等。

 解决办法:找一个没有错的界面头部,直接拷贝过来。

添加日期:2018.09

连接MYSQL数据库报错:

Loading class com.mysql.jdbc.Driver'. This is deprecated. The new driver class iscom.mysql.cj.jdbc.Driver’. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.

问题原因:mysql驱动包的版本和驱动声明不匹配,通常出现在使用了mysql-connector-java-8.0.11.jar这个mysql驱动包。

处理方式:修改连接驱动信息如下   jdbc.driverClassName=com.mysql.cj.jdbc.Driver

springMVC    Controller  Service Dao  注入问题:

启动项目时提示:Error creating bean with name 'org.springframework.web.servlet.mvc.method.annotation.RequestMapping

以及Ambiguous mapping found. Cannot map 'baseController.hello' bean  

问题原因:重复注入,多个bean注入时的注入名一样。

处理方式:1通过全局查找对应bean的注入名称是否重复进行修改  2在继承baseController时 在controller注解当中填上路径。

Hibernate查询报错:org.hibernate.hql.internal.ast.QuerySyntaxException: XXX is not mapped

问题原因:hibernate执行查询的语句hql是面向对象的查询,而不是面向数据库表的查询,因此在hql语句中的对象名必须与实体类的类名一致,严格区分大小写。

处理方式:检查sql语句,例如对应实体类为User  对应表为 t_user 查询sql语句为:select * from User 

检查对应的实体类和表的对应关系是否正确,检查数据库当中的表是否存在等等。

数据库连接问题:org.springframework.transaction.CannotCreateTransactionException

问题原因:数据库连接配置问题

处理方式:检查数据库连接是否正确,检查是否有空格什么的。

 

添加日期 2018.10

错误信息:Property 'configuration' and 'configLocation' can not specified with together

问题原因:spring整合mybatis时同时配置了configuration和config-Location这两个配置信息。在spring的配置文件指定了mybatis的配置文件 就不能在spring的配置里面写入mybatis的配置,所以报错。

处理方式:将spring配置里面写入的mybatis配置去掉。或者不指定mybatis配置文件 就是下面两个2选1

添加日期:2018.11

错误信息:读取utf-8文件时,第一行多出一个字符,怎么都去不掉,并且如果换成其他编码格式文件就没有这个字符。

问题原因:BOM——Byte Order Mark,就是字节序标记。多出来的字符(BOM)就是标记这个文件是UTF-8编码。打开的文件是一个UTF-8 BOM编码类型的文件。

处理方式:将该文件通过NOTPAD++打开,然后在编码当中选择UTF-8编码。

错误信息: Operation not allowed after ResultSet closed

问题原因:在进行JDBC操作数据库连接的时候,获取到ResultSet 对象 但是返回ResultSet 对象之后,就关闭了connection和statment对象。关闭这两个对象会导致ResultSet 对象也被关闭。但是如果不关闭connection和statment对象,又会造成过多连接。

处理方式:如果要返回ResultSet 对象进行操作的话,使用ResultSet 的子类RowSet进行接收。这样关闭connection和statment对象不会影响到RowSet。

添加日期:2019.03

错误信息:springboot项目上线运行一段时间后,上传图片报错。

问题原因:Spring Boot项目在启动后,会生成临时文件夹,上传文件时文件会存在临时文件中; linux系统下长时间不操作,临时文件目录会被删除,上传文件时获取不到文件目录,就会报错

处理方式: 在配置当中指定具体的存储位置然后通过@bean注入。或者在配置文件当中配置server.tomcat.basedir==/usr/local

错误信息:springboot项目添加了websocket后,项目可以正常启动,但是单元测试时,提示websocket错误。

问题原因:Spring Boot项目在测试时默认是模拟的web环境,在进行websocket时需要真实环境。

处理方式: 修改测试的注解为:@SpringBootTest(classes = SellApplication.class, webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)  表明使用真实的环境进行测试

 

 

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值