zoukankan      html  css  js  c++  java
  • java 报错及解决

    • java文件编译报错:error: unmappable character for encoding ASCII
      解决:
      编译时:javac -encoding utf-8 TestJava.java
      运行时:java -Dfile.encoding=utf-8 TestJava

    • 问题:
      mac系统下,javac运行报错:Error: Could not find or load main class xxx
      解决:如果你的class在package里,你必须cd到包含该package的目录,运行带package的全路径class
      举例:
      比如我的class,是java_project/package1/Main.class
      bash命令如下:

    cd java_project
    java package1/Main 或 java package1.Main
    
    • 问题:
      Eclipse EE 报错:The reference to entity "useSSL" must end with the ';' delimiter
      解决:在xml文件中 &符号 需要转义; 这个根据 HTML 的转义规则 更改就行 & -> &(分号为英文符号)

    • 问题:
      Eclipse EE 警告:The resource is a duplicate of xxx and was not copied to the output folder
      原因:当有多个 source folders,而且多个 source folders 都有同名的文件时,报这个警告。
      解决:让不同的 source folders 中,没有同名的文件。如果项目需要有同名的文件,可忽略此警告。

    • 问题:
      Eclipse EE 警告:Resource leak: 'context' is never closed
      具体代码,ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
      解决:将前面用子类来写,并关闭
      ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");

    • 问题:
      Eclipse EE 报错:The serializable class does not declare a static final serialVersionUID field of type long
      原因:
      serialVersionUID用来作为Java对象序列化中的版本标示之用;
      如果一个序列化类没有声明这样一个static final的产量,JVM会根据各种参数为这个类计算一个;
      对于同样一个类,不同版本的JDK可能会得出不同的serivalVersionUID;
      序列化时为了保持版本的兼容性,即在版本升级时反序列化仍保持对象的唯一性。

    你可以随便写一个,在Eclipse中它替你生成一个,有两种生成方式:
    一个是默认的1L,比如:private static final long serialVersionUID = 1L;
    一个是根据类名、接口名、成员方法及属性等来生成一个64位的哈希字段,比如:private static final long serialVersionUID = -8940196742313994740L;之类的。

    当你一个类实现了Serializable接口,如果没有定义serialVersionUID,Eclipse会提供这个提示功能告诉你去定义之。
    在Eclipse中点击类中warning的图标一下,Eclipse就会自动给定两种生成的方式,如上面所述。如果不想定义它,在Eclipse的设置中也可以把它关掉的,设置如下:
    Window ==> Preferences ==> Java ==> Compiler ==> Error/Warnings ==> Potential programming problems
    将Serializable class without serialVersionUID的warning改成ignore即可。

    如果你没有考虑到兼容性问题时,就把它关掉,不过有这个功能是好的,只要任何类别实现了Serializable这个接口的话,如果没有加入 serialVersionUID,Eclipse都会给你warning提示,这个serialVersionUID为了让该类别 Serializable向后兼容。
    如果你的类Serialized存到硬盘上面后,可是后来你却更改了类别的field(增加或减少或改名),当你Deserialize时,就会出现Exception的,这样就会造成不兼容性的问题。
    但当serialVersionUID相同时,它就会将不一样的field以type的预设值Deserialize,这个可以避开不兼容性的问题。
    最后,不考虑兼容性的问题,我把这个warning改成ignore了。

    • 问题:
      Eclipse EE 报错:One or more constraints have not been satisfied
      原因: Deployment Assembly跟java版本不匹配
      解决:
      在pom.xml中添加下面内容即可,同时也可以解决Maven->update project动作后默认jdk的问题
    <project>
    ...
    	<profiles>
    		<profile>
    			<id>jdk-1.8</id>
    			<!-- 另外一种激活方式 -->
    			<activation>
    				<activeByDefault>true</activeByDefault>
    				<jdk>1.8</jdk>
    			</activation>
    			<properties>
    				<maven.compiler.source>1.8</maven.compiler.source>
    				<maven.compiler.target>1.8</maven.compiler.target>
    				<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
    			</properties>
    		</profile>
    	</profiles>
    ...
    </project>
    
    • 问题:
      web.xml头部配置:
    <?xml version="1.0" encoding="UTF-8"?> 
    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> 
    <web-app> 
    

    Eclipse EE 报错:The content of element type "web-app" must match "(icon?,display-name?,description?,distributable?,context-param,filter,filter-mapping,listener,servlet,servlet-mapping,session-config?,mime-mapping,welcome-file-list?,error-page,taglib,resource-env-ref,resource-ref,security-constraint,login-config?,security-role,env-entry,ejb-ref,ejb-local-ref)"
    原因:
    文档内容标签顺序不符合web-app_2_3.dtd规范
    解决:
    1:严格按照提示上的顺序排列
    2:删除<!DOCTYPE 。。。。这段内容

    • 问题:
      Eclipse EE 报错:Cannot change version of project facet Dynamic Web Module to 3.1。
      原因:
      Dynamic Web Module 在这里无法直接修改为3.1
      解决:
      打开工程目录下有一个.settings文件夹,打开org.eclipse.wst.common.project.facet.core.xml,做如下修改:
    <installed facet="jst.web" version="3.1"/>  
    

    重启eclipe就可以看到更改生效了。

    • 问题:
      Eclipse EE 报错:Build path specifies execution environment J2SE-1.5. There are no JREs installed in the workspace that are strictly compatible with this environment.
      原因:
      JRE 不匹配。
      解决:
      项目目录右击 =》Properties =》Java Build Path =》Libraries =》Add Library... =》JRE System Library =》选择需要的JRE。

    • 问题:
      Eclipse EE 报错:Cannot make a static reference to the non-static method format(Date) from the type DateFormat
      原因:
      java中 静态方法不可以直接调用非静态方法和成员,也不能使用this关键字。
      解决:
      之前写的:
      DateFormat.format(new Date())
      改成:
      DateFormat.getInstance().format(new Date())
      查询api,看具体用法。

    • 问题:
      Eclipse EE 报错:Overriding managed version 4.12 for junit,类似报错。
      原因:
      覆盖定义了版本,在父的pom文件中已经定义了。
      解决:
      删除当前依赖的version。

    • 问题:
      Eclipse EE 报错:Duplicating managed version 4.12 for junit,类似报错。
      原因:
      重复定义了版本,在父的pom文件中已经定义了。
      解决:
      删除当前依赖的version。

    • 问题:
      Eclipse EE 报错:The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path。
      原因:
      Javaweb工程的类中,没有添加Tomcat运行时相关类导致。
      解决:
      项目目录右击 =》Build Path =》Configure Build Path... =》Libraries =》Add Library... =》Server Runtime =》选中需要的tomcat。
      http://blog.csdn.net/testcs_dn/article/details/36455669

    • 问题:
      Eclipse EE 报错:Java compiler level does not match the version of the installed Java project facet.
      或 Build path specifies execution environment J2SE-1.5. There are no JREs installed in the workspace that are strictly compatible with this environment.
      解决:
      右键项目“Properties”,在弹出的“Properties”窗口左侧,单击“Project Facets”,打开“Project Facets”页面。
      在页面中的“Java”下拉列表中,选择相应版本就OK了

  • 相关阅读:
    gradle3.0新命令
    Android Studio项目生成Jar包
    《图解HTTP》读书笔记
    Java实现多继承
    Unity3d和Android之间互相调用
    《Gradle权威指南》--Android Gradle NDK支持
    《Gradle权威指南》--Android Gradle测试
    《Gradle权威指南》--Android Gradle多渠道构建
    adb命令大全
    SparseArray源码解析
  • 原文地址:https://www.cnblogs.com/cag2050/p/6846518.html
Copyright © 2011-2022 走看看