工程/项目错误:常出现的可能的错误

 

本文只是博主在编写过程当中遇到的一些问题,欢迎你们留言继续补充

 



1、开发工具相关错误:

0一、引用别人的工程,出现的可能的错误

多半是由于jdk版本的缘由,调整一下便可:html

解决方法:Build Path ==> Configure Build Path… ==>Libraies==>找出其中带红叉那个jdk;Remove==>java

而后添加本身使用的jdk版本:Add Library==>JRE System Library==>选择本身的jre后点击完成;node

若仍然有错,那么:Add Library==>Server Runtime==>选择本身的tomcat后点击完成;mysql

若是这时你的项目里面没错了,可是项目上仍是有红叉的话,解决方案参考http://www.cnblogs.com/mmzs/p/8398109.htmljquery


0二、eclipse开发servlet,HttpServletRequest报红叉解决方案

开发一个Servlet,代码和配置路径都没问题,HttpServlet竟然报错了!吓坏我了,因而开始了,调错之路。linux

解决方法:鼠标右击项目工程——》Build Path——》点击comfigure Build Path进入----->选择java Bulid Path------>在左边点击Libraries--------->选择Add Librar,在Add Library中选择Server Runtime,点击下一步Next。------>选择Apache Tomcat,点击完成。------>这时,在Libraries下能够看到Apache Tomcat了就能够点击ok按钮------>代码出现的红扠都消失了。web


0三、Eclipse启动Tomcat,45S超时问题解决

解决办法:将时间调大便可;而后保存修改,重启动Tomcat;若是仍然报Timeout错误,继续上述步骤将Timeouts下的Start值改大。spring


0四、报错:javax.servlet.ServletException: Error instantiating servlet class org.springframework.web.servlet.DispatcherServlet

这个主要是在maven配置项目时出现的错误,相似上面的这种报错均可以用如下方式解决。sql

 解决方案;项目右击-->properties-->Deployment Assembly-->add-->Java Build Path Entries-->导入全部依赖的Jar包,从新tomcat便可。数据库


0五、maven项目pom.xml文件报错、或者没有文件报错,可是工程仍是有红叉的状况?

解决办法: 使用 maven-compiler-plugin 将 maven 编译级别改成 jdk1.6 以上:

 1 <build>  
 2     <plugins>  
 3         <!-- define the project compile level -->  
 4         <plugin>  
 5             <groupId>org.apache.maven.plugins</groupId>  
 6             <artifactId>maven-compiler-plugin</artifactId>  
 7             <version>2.3.2</version>  
 8             <configuration>  
 9                 <source>1.7</source>  
10                 <target>1.7</target>  
11             </configuration>  
12         </plugin>  
13     </plugins>  
14 </build>  
在build中添加插件,修改jdk版本

如若不能解决,试试如下办法:

maven配置文件不是最新的问题maven中pom.xml的war报错解决方法


0六、Maven项目下update maven后Eclipse报错:java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener

问题背景:
工程为maven工程,ContextLoaderListener类位于spring-web-3.1.0.RELEASE.jar包中。检查了maven的pom.xml,依赖引入正常。在工程Maven Dependencies视图中也能看到spring-web-3.1.0.RELEASE.jar包被正常引入进来了。
错误缘由:
进入到tomcat的部署路径.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\下检查了一下,发现工程部署后在WEB-INF文件夹下没有生成lib目录,正常状况下,会生成lib目录并把工程的全部依赖jar包都部署到该目录下。
解决方案:
1.右键点击项目--选择Properties
选择Deployment Assembly,在右边点击Add按钮,在弹出的窗口中选择Java Build Path Entries
2.点击Next,选择Maven Dependencies
3.点击Finish,而后能够看到已经把Maven Dependencies添加到Web应用结构中了


0七、nested exception is java.lang.OutOfMemoryError: PermGen space

解决方案:
方案一:
eclipse中:
依次点击:Window--->Preferences--->Java--->Installed JREs--->选中本身使用的jre--->Edit--->在Default VM arguments这一栏添加以下内容:
-server -Xms512M -Xmx1024M -XX:PermSize=256M -XX:MaxNewSize=512M -XX:MaxPermSize=512M
而后保存退出,重启tomcat生效。
方案二:
到tomcat/bin的目录下,找到catalina.bat文件(这个是window文件,若是是linux系统,则修改的是catalina.sh文件)用文本编辑器打开,

cygwin=false(linux系统)上

添加下面这一行:
JAVA_OPTS="-Xms1024m -Xmx4096m -Xss1024K -XX:PermSize=512m -XX:MaxPermSize=2048m -XX:MaxNewSize=256M"

解释一下各个参数:
-Xms4096M:初始化堆内存大小(注意,不加M的话单位是KB);
-Xmx4096M:最大堆内存大小;尽可能将Xms和Xmx两个设置为同样的,这样能够避免堆内存扩展,减小申请内存的时间;
-XX:PermSize=512M:初始化类加载内存池大小;
-XX:MaxPermSize=2048M:虚拟机的最大类加载内存池大小;尽可能将PermSize和MaxPermSize两个设置为同样的,这样能够避免扩展内存,其实也能够说不容许扩展内存;
-XX:MaxNewSize=256M:永久代的内存上限,在HotSpot虚拟中就至关于方法区的内存上限;
还有一个-server参数,是指启动jvm时以服务器方式启动,比客户端启动慢,但性能较好,你们能够本身选择。


0八、Unsupported major.minor version xxx

错误缘由:jdk版本不一致问题

解决办法:将配置文件的jdk版本都统一


0九、Unable to start embedded container;

错误缘由:应该是和jar包冲突有关,但找了半天也没找着冲突的jar包是哪一个,可是jar包确定跟tomcat有关,后来有个帖子说IDE集成tomcat会有影响,这个报错以前,我刚把Eclipse配置了RuntimeEnvironments,因此我再次把他去掉,问题解决。

解决办法:Eclipse-->Windows-->perferences-->RuntimeEnvironments-->将tomcat去掉


十、在Eclipse中创建好一个Maven项目后,若是Java Resources资源文件下没有src/main/java文件夹

解决办法:在项目上右键选择properties-->java build path-->Add Library...-->JRE System Library-->workspace default jre


十一、eclipse的.properties文件中文显示问题

 解决办法:Window-->General-->Content Types-->Text-->Java Properties File-->*.properties(locked)--->Default encoding:UTF-8-->Update


十二、Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.2:war (default-war) on project child02

详见:http://www.cnblogs.com/mmzs/p/8761417.html


1三、

 



2、数据库的错误:

0一、java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)

网上网友的解决方法有: 大概3种,一种认为是要修改root的密码,一种认为是远程链接的权限被限制了,一种是经过写一个文件在Dos里面运行实现。

个人这个问题的一种解决方法:为当前用户(个人是root用户)添加对该表的管理员权限,便可;由于用了可视化的sql管理工具,很容易就解决了问题。


0二、Java程序向MySql数据库中插入的数据变成了问号

在确认本身的页面是使用utf-八、数据库和表的编码格式是utf8时;修改配置文件my.ini

[client]

port=3306

[mysql]

default-character-set=utf8


# SERVER SECTION
# ----------------------------------------------------------------------
#
# The following options will be read by the MySQL Server. Make sure that
# you have installed the server correctly (see above) so it reads this
# file.
#
[mysqld]

# The TCP/IP Port the MySQL Server will listen on
port=3306


#Path to installation directory. All paths are usually resolved relative to this.
basedir="C:/Program Files/MySQL/MySQL Server 5.5/"

#Path to the database root
datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/"

# The default character set that will be used when a new schema or table is
# created and no character set is defined
character-set-server=utf8

而后:开始-->运行-->输入:services.msc,打开“服务”,找到MySQL服务,右键重启便可。

也可在可视化工具中:查询数据库和表的编码格式

mysql> SHOW VARIABLES LIKE 'character%';

+--------------------------+-----------------------+
| Variable_name | Value
+--------------------------+-----------------------+
| character_set_client | utf8 *客户端使用的编码
|
| character_set_connection | utf8 数据库链接时使用的编码
|
| character_set_database | utf8 数据库用的编码
|
| character_set_results | utf8 *查询结果集用的编码
|
| character_set_server | utf8 服务器使用的编码
|
| character_set_system | utf8 系统使用的编码

告知服务器客户端使用的编码:  SET character_set_client=gbk;
告知服务器返回的结果集请使用UTF8: SET character_set_results=gbk;


0三、linux中启动mysql数据库报错

第一种状况:
MySQL server PID file could not be found!                  [FAILED]
Starting MySQL...The server quit without updating PID file [FAILED]ydata/centossz008.pid).


第二种状况:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'
错误信息

第二种状况:

错误缘由:权限问题

解决办法: chown -R mysql.mysql /software/mysql-5.5.32

第一种状况:

错误缘由:MySQL默认是开启了日志文件的,若是数据操做比较频繁就会产生大量的日志,在/usr/local/mysql/var/下面产生mysql- bin.0000* 相似的文件,并且通常都在几十MB到几个GB,更甚会吃掉整个硬盘空间,历来致使mysql没法启动或报错。

解决办法:

解决方法a、完全禁用MySQL日志:修改/etc/my.cnf 文件,找到

log-bin=mysql-bin
binlog_format=mixed

再这两行前面加上#,将其注释掉,再执行/etc/init.d/mysql restart便可。
若是实在想保留日志,能够在/etc/my.cnf里加入
expire_logs_days = 30
而后重启mysql,这样30天就会自动清理日志。

网上有很多这个缘由的解释,可是都不是我想说的。
data/mysql-bin.index 没有删除,data/mysql-bin.index是存放日志文件索引的文件,只删除了日志文件而没有对日志的索引文件作处理显然是不行的。

删除data/mysql-bin.index文件,再service mysqld start就能够了。

解决方法b:


0四、

 



3、开发错误: 

0一、报错:java.lang.ClassNotFoundException:

 首先确认你的jdk安装路径是配置的没问题:

配置JDK环境:

JAVA_HOME:D:\software\JDK1.7
Path:%JAVA_HOME%\bin;%JAVA_HOME%\lib;

而后出现的问题就是找不到jar包;

因此博主提供一种最简单的解决方式:将所需jar包导入到以下目录:D:/software/jdk1.7.0_79/jre/lib/ext 便可;

可是在直接使用java -jar Test.jar命令运行时,能够成功;

可是有时开启你的hdfs的集群时会报

ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: Failed to start namenode.
org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: 
2017-12-07 12:07:54,549 INFO org.apache.hadoop.util.ExitUtil: Exiting with status 1
2017-12-07 12:07:54,555 INFO org.apache.hadoop.hdfs.server.namenode.NameNode: SHUTDOWN_MSG: 

相似的错;缘由就是包导入的问题,因此你须要将D:/software/jdk1.7.0_79/jre/lib/ext 下的某些包删掉便可;


0二、报错:org.apache.ibatis.exceptions.PersistenceException:

### Error querying database.  Cause: org.apache.ibatis.reflection.ReflectionException: Error instantiating class com.panda.test1.User with invalid types () or values (). Cause: java.lang.NoSuchMethodException: com.panda.test1.User.<init>()  

错误缘由是,User.java类中没有默认的无参构造函数,加上无参构造函数后,错误消失。

解决方案:1. model中的get/set方法与成员变量不一。
2. 构造函数被重载过,可是没有空的构造函数。
3. 最好不要使用简单类型,如int, long等,改用对象模式Integer, Long等。在写条件查询时会用到判断<if xxx != null > … </if>的


0三、org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderException: Error resolving JdbcType.

Cause: java.lang.IllegalArgumentException: No enum constant org.apache.ibatis.type.JdbcType.NUMBER

java.lang.IllegalArgumentException: No enum constant org.apache.ibatis.type.JdbcType.int

错误缘由:Mybatis中jdbcType整形应该为NUMERIC

解决办法:

JDBC Type           Java Type  
CHAR                String  
VARCHAR             String  
LONGVARCHAR         String  
NUMERIC             java.math.BigDecimal  
DECIMAL             java.math.BigDecimal  
BIT             boolean  
BOOLEAN             boolean  
TINYINT             byte  
SMALLINT            short  
INTEGER             int  
BIGINT              long  
REAL                float  
FLOAT               double  
DOUBLE              double  
BINARY              byte[]  
VARBINARY           byte[]  
LONGVARBINARY               byte[]  
DATE                java.sql.Date  
TIME                java.sql.Time  
TIMESTAMP           java.sql.Timestamp  
CLOB                Clob  
BLOB                Blob  
ARRAY               Array  
DISTINCT            mapping of underlying type  
STRUCT              Struct  
REF                         Ref  
DATALINK            java.net.URL[color=red][/color]  
Mybatis中javaType和jdbcType对应关系

0四、org.apache.ibatis.cache.CacheException: Error serializing object.  Cause: java.io.NotSerializableException: cn.mmzs.mybatis.po.User

错误缘由:pojo类没有实现java.io.serializable序列化接口


0五、iBatis查询结果部分为null的解决办法

解决办法:

将查询的结果都起别名,并且这些别名不是随便起的,别名对应于TCard类的属性,这样才能成功查到结果:

select a.T_ID as tid, a.START_NUM as startNum, a.END_NUM as endNum from T_CARD a 

0六、maven项目的pom.xml文件报错?

解决办法: 点这里


0七、jsp中引用js文件时,动态生成的id,经过jquery的id选择器来获取;不但获取不到,并且不能在另一个函数中使用?

解决办法:将id换成onclick;从而定义一个函数,新建一个函数,这样子就能使用那个函数了。


0八、java.util.LinkedHashMap cannot be cast to com.mmzs.entity.PageEntity

错误提示:PageEntity pageEntity = (PageEntity) ((Map<String, Object>) map).get("pageEntity");

错误缘由:上面面的方式不能强转成实体类,由于LinkedHashMap和实体类都实现了序列化接口

解决办法:PageEntity pageEntity = JSONObject.toJavaObject((JSON) JSON.toJSON(((LinkedHashMap)map).get("pageEntity")), PageEntity.class);


0九、HTTP Status 500 - Request processing failed; nested exception is org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

错误缘由:.xml文件没加载起,极可能是配置出了问题,或者一不当心改动了配置

解决办法:http://www.cnblogs.com/mmzs/p/8757709.html

十、sql语句没问题,可是其中有一个字段查询出来是空?

解决办法:检查构造方法


十一、实体类转化出错: disable SerializationFeature.FAIL_ON_EMPTY_BEANS

报错:(to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: com.mmzs.cloud.entity.User_$$_jvst73b_0["handler"])

解决办法:在实体类上面加上注解 @JsonIgnoreProperties(value = { "hibernateLazyInitializer", "handler" })


 

十二、

相关文章
相关标签/搜索