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


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



    一、开发工具相关错误:

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

    多半是因为jdk版本的原因,调整一下即可:

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

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

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

    如果这时你的项目里面没错了,但是项目上还是有红叉的话,解决方案参考http://www.cnblogs.com/mmzs/p/8398109.html


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

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

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


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

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


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

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

     解决方案;项目右击-->properties-->Deployment Assembly-->add-->Java Build Path Entries-->导入所有依赖的Jar包,重新tomcat即可。


    05、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报错解决方法


    06、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.pluginsorg.eclipse.wst.server.core mp0wtpwebapps下检查了一下,发现工程部署后在WEB-INF文件夹下没有生成lib目录,正常情况下,会生成lib目录并把工程的所有依赖jar包都部署到该目录下。
    解决方案:
    1.右键点击项目--选择Properties
    选择Deployment Assembly,在右边点击Add按钮,在弹出的窗口中选择Java Build Path Entries
    2.点击Next,选择Maven Dependencies
    3.点击Finish,然后可以看到已经把Maven Dependencies添加到Web应用结构中了


    07、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时以服务器方式启动,比客户端启动慢,但性能较好,大家可以自己选择。


    08、Unsupported major.minor version xxx

    错误原因:jdk版本不一致问题

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


    09、Unable to start embedded container;

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

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


    10、在Eclipse中建立好一个Maven项目后,如果Java Resources资源文件下没有src/main/java文件夹

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


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

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


    12、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


    13、



    二、数据库的错误:

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

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

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


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

    在确认自己的页面是使用utf-8、数据库和表的编码格式是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;


    03、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:


    04、



    三、开发错误: 

    01、报错:java.lang.ClassNotFoundException:

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

    配置JDK环境:

    JAVA_HOME:D:softwareJDK1.7
    Path:%JAVA_HOME%in;%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 下的某些包删掉即可;


    02、报错: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>的


    03、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对应关系

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

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


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

    解决办法:

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

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

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

    解决办法: 点这里


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

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


    08、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);


    09、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

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

    解决办法:检查构造方法


    11、实体类转化出错: 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" })


    12、

  • 相关阅读:
    Mysql免安装版脚本
    在防火墙的例外中注册程序(Windows7和XP),改写注册表
    与内存有关的那些事儿(数组分配空间不够,导致缓冲区溢出,从而strcpy会出现异常)
    WPF入门介绍
    vs2008编译QT开源项目--太阳神三国杀源码分析(三) 皮肤
    TOGAF架构开发方法(ADM)之迁移规划阶段
    LoadTest中内存和线程Troubleshooting实战
    BeginInvoke与EndInvoke方法解决多线程接收委托返回值问题
    工具条OutLookBar
    Winform开发框架之通用高级查询模块
  • 原文地址:https://www.cnblogs.com/mmzs/p/7662863.html
Copyright © 2020-2023  润新知