工作和学习中遇到的各种报错及解决方案
一. Java项目连接MySQL时报错: "The last packet sent successfully to the server was 0 milliseconds ago."
1. 出错原因
数据库回收了连接, 而系统的缓冲池不知道, 继续使用被回收的连接.
2. 解决方法
方法一. 将MySQL回收空闲连接的时间变长, MySQL默认回收时间是8小时, 可以在MySQL目录下的my.ini中增加下面配置, 将时间改为1天(单位是秒)
[mysqld] wait_timeout=86400
方法二. 可以通过配置, 让缓冲池去测试连接是否被回收, 如果被回收, 则不继续使用, DBCP添加如下配置
# SQL查询,用来验证从连接池取出的连接 dbcp.validationQuery=SELECT 1 # 指明连接是否被空闲连接回收器(如果有)进行检验,如果检测失败,则连接将被从池中去除 dbcp.testWhileIdle=true # 在空闲连接回收器线程运行期间休眠的时间值,以毫秒为单位,一般比minEvictableIdleTimeMillis小 dbcp.timeBetweenEvictionRunsMillis=300000 # 在每次空闲连接回收器线程(如果有)运行时检查的连接数量,最好和maxActive一致 dbcp.numTestsPerEvictionRun=50 # 连接池中连接,在时间段内一直空闲,被逐出连接池的时间(1000*60*60),以毫秒为单位 dbcp.minEvictableIdleTimeMillis=3600000
二. Linux启动Java项目报错: Get local host name failed.java.net.UnknownHostException.
1. 详细错误信息如下
ERROR - Get local host name failed -com.trs.infra.cluster.ClusterConfig.getMemberHost(ClusterConfig.java:293) java.net.UnknownHostException: localhost: localhost at java.net.InetAddress.getLocalHost(InetAddress.java:1353) at xxxxxxx 产品异常信息 at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1029) at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:862) at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4013) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4357) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:823) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:807) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:595) at org.apache.catalina.core.StandardHostDeployer.install(StandardHostDeployer.java:277) at org.apache.catalina.core.StandardHost.install(StandardHost.java:832) at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:701) at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:432) at org.apache.catalina.startup.HostConfig.start(HostConfig.java:983) at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:349) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1091) at org.apache.catalina.core.StandardHost.start(StandardHost.java:789) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1083) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:478) at org.apache.catalina.core.StandardService.start(StandardService.java:480) at org.apache.catalina.core.StandardServer.start(StandardServer.java:2313) at org.apache.catalina.startup.Catalina.start(Catalina.java:556) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:287) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:425)
2. 出错的Java代码
InetAddress localhost = InetAddress.getLocalHost();
3. 分析问题
ping 127.0.0.1 可以ping通
ping localhost 不通
说明是主机映射的原因
4. 解决方法
在Linux的/etc/hosts文件最后一行加入如下代码
127.0.0.1 www.paulandcode.com localhost
第一部份: 网络IP地址
第二部份: 主机名或域名
第三部份: 主机名别名
三. Java, Kettle, Jenkins等第三方插件执行Linux的sudo命令时报错: sudo: no tty present and no askpass program specified
1. 这是因为非root账号执行sudo时需要密码, 可以设置免密码.
2. 进入到root用户下
3. 给/etc/sudoers文件添加写权限
chmod u+w /etc/sudoers
4. 添加免密码
abc ALL = NOPASSWD: ALL
四. 阿里云的Linux报错: sudo: unable to resolve host [hostname]
1. 执行sudo vim /etc/hosts编辑原文件如下
127.0.0.1 localhost # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters
2. 在第一行下面添加如下代码
127.0.0.1 [hostname]
3. 如果觉得主机名太长, 可以在/etc/hostname里面修改, 重启后生效.
五. Kettle报错: Unexpected problem reading shared objects from XML file:null
1. 原因
将数据库链接进行了共享, 然后删除共享. 再次保存转换时报错.
或者DB连接为中文, 也会报这个错误.
2. 解决
在C:/Administrator/.kettle文件夹下, 找到share.xml, 在文件中找到sharedobjects节点, 将想要删除的共享对应的子节点删除.
六. ORA-01810: 格式代码出现两次
1. 错误原因
Oracle中格式化时间时出错(分钟不能用java中的mm), 出错Sql代码:
TO_DATE('2011-09-24 00:00:00','YYYY-MM-DD HH:mm:ss')
2. 正确的Sql如下:
TO_DATE('2011-09-01 00:00:00','YYYY-MM-DD HH24:MI:SS')
七. Java报错: SEVERE: Unable to process Jar entry [......]for annotations java.io.EOFException
可能原因:
1. jar包损坏, 需删掉jar包重新下载
2. Tomcat版本, 遇到过的情况: 使用8.0.9版本Tomcat启动报这个错, 改成8.0.22版本就不报错了.
3. 一个Tomcat中部署了两个同样的项目,一个war,一个由该war解压的文件夹,删掉一个即可
八. Tomcat启动报错: Unsupported major.minor version 52.0
1. 错误原因
不支持JDK1.8, 在编译时使用的时JDK1.8, 而运行时使用的JDK版本低于1.8
2. 解决方案
指定Tomcat运行时JDK版本(若不指定, 会使用默认版本)
在Tomcat安装目录下的bin目录找到setclasspath.bat这个文件, 编辑文件, 在第一行加入如下代码
set JAVA_HOME=D:\Program Files\Java\jdk8\jdk1.8.0_51 set JRE_HOME=D:\Program Files\Java\jdk8\jre8
九. 启动Tomcat报错: IllegalArgumentException: The main resource set specified ... is not valid
1. 错误信息
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/spring]] at java.util.concurrent.FutureTask.report(Unknown Source) at java.util.concurrent.FutureTask.get(Unknown Source) at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:941) at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:872) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1421) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1411) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/spring]] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167) ... 6 more Caused by: org.apache.catalina.LifecycleException: Failed to start component [org.apache.catalina.webresources.StandardRoot@19d5011c] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167) at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4868) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5003) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) ... 6 more Caused by: java.lang.IllegalArgumentException: The main resource set specified [D:\Users\chengyq\eclipse-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\spring] is not valid at org.apache.catalina.webresources.StandardRoot.createMainResourceSet(StandardRoot.java:748) at org.apache.catalina.webresources.StandardRoot.startInternal(StandardRoot.java:706) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) ... 9 more
2. 错误原因
之前创建了一个名为spring的项目,已经删除, 但是server中还有这个项目。现在运行其他项目,报错找不到已经删除的项目。
3. 解决方法
(1) 找到如下路径: workspacemetadatapluginsorg.eclipse.wst.server.coretmp0conf, 将其中已删除项目对应的标签删除。
(2) 删除Eclipse左侧Servers中对应的Server.xml文件中多余的配标签
十. Arrays.asList返回的List无法直接使用add()方法, Java报错: java.lang.UnsupportedOperationException
1. 报错代码
String[] array = {"1","2","3","4","5"}; List<String> list = Arrays.asList(array); list.add("6");
2. 报错信息
Exception in thread "main" java.lang.UnsupportedOperationException at java.util.AbstractList.add(AbstractList.java:148) at java.util.AbstractList.add(AbstractList.java:108) at com.paulandcode.test.ListTest.main(ListTest.java:11) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498)
3. 错误分析
调用了Arrays.asList()生产的List的add、remove方法时报异常, 这是由Arrays.asList() 返回的是Arrays的内部类ArrayList, 而不是java.util.ArrayList. Arrays的内部类ArrayList和java.util.ArrayList都是继承AbstractList, remove、add等方法AbstractList中是默认throw UnsupportedOperationException而且不作任何操作. java.util.ArrayList重新了这些方法而Arrays的内部类ArrayList没有重新, 所以会抛出异常.
4. 解决错误
String[] array = {"1","2","3","4","5"}; List<String> list = Arrays.asList(array); List<String> arrList = new ArrayList<String>(list); arrList.add("6");

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Linux零碎笔记, 及一些命令
001.gui与tui gui, 完全的图形界面. tui, 终端下的图形界面. 002.补全命令 输入前缀, 按一次Tab. 若前缀不唯一, 按2次Tab, 出现相关命令列表. 003.RHEL7.2实现上网功能 1.固定的可用联网IP地址 2.关闭防火墙 3.关闭selinux 4.光盘自动挂载 5.配置好本地yum源 004.linux系统安装分区(标准分区) 1.boot分区:引导分区(启动系统用的), grub(引导器), 内核文件 200M 2.swap分区:内存扩展分区, 一般最多8G或16G 1000M 3./ 根:所有文件的根 10G 4.sda:linux下的第一个磁盘 5.RHEL7使用xfs文件系统, RHEL6使用ext4文件系统, Win7/10使用NTFS文件系统 005.手动配置以太网_IPv4设置 1.ip地址:192.168.0.71(网段192.168一样, 且是没用过的ip) 2.子网掩码:24 3.网关:192.168.0.1 4.DNS服务器:8.8.8.8(或114.114.114.114) 006.ubuntu第一次切换到root用户失败...
- 下一篇
Docker零碎笔记
001.查看镜像、容器、数据卷所占用的空间 docker system df 002.具体查看镜像内的历史记录 docker history nginx:v2 003.使用Dockerfile构建镜像(注意后面有个点) docker build -t myip . 004.使用compose对docker容器进行编排管理时,需要编写docker-compose.yml文件需要注意缩进 yml文件换行后的缩进,不允许使用tab键字符,只能使用空格,而空格的数量要一致 005.docker-compose 负责实现对 Docker 容器集群的快速编排 006.docker-machine 负责在多种平台上快速安装docker环境 007.swarm mode 负责将多个docker主机封装为单个大型的虚拟dockerd主机,快速打造一套容器云平台 008.安装virtualbox sudo apt-get purge virtualbox sudo apt-get install linux-generic linux-image-generic linux-headers-generic...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS7安装Docker,走上虚拟化容器引擎之路
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS8编译安装MySQL8.0.19
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7,CentOS8安装Elasticsearch6.8.6
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作