• java常见报错整理


    报错1.  Implicit super constructor Object() is undefined for default constructor. Must define an explicit constructor

    原因:没导入java的JRE库
    解 决方案:把java的类库加载进去,在工程上右键选择属性(properties)->Java Build Path : Libraries->Add Library选择JRE System Library->点击Next->选中:workspace default jre(或选择Execution environment并选择版本)->点击Finish。

    报错2.eclipse:在debug模式下启动很慢,直接run启动正常

    原因:设置的断点太多,以debug模式启动时,发生了读取文件错误,以至于不能正启动

    解决办法:window"-------show view------other-------Debug

                     debug—>breakpoint-------->Remove all重新启动就好了

     3.post 400 (Bad Request)

    原因(1):提交表单数据类型与model不匹配(前端提交数据的字段名称或者是字段类型和后台的实体类不一致,导致无法封装)

    如springmvc 在接收日期类型参数时,如不做特殊处理 会出现400语法格式错误

    解决:在get方法上加时间格式化注解(该格式类型和前台页面所传的日期格式相同):@DateTimeFormat(pattern = "yyyy-MM-dd")

    @Column(name="CONTROLLOLDER_VALIDITY")
     @DateTimeFormat(pattern = "yyyy-MM-dd")
     public Date getControllHolderValidity() {
      return controllHolderValidity;
     }

    4.直接在Service或Dao层:调用Persist()或Merge等方法,不报错,也不插入数据库:

    如:

     1 @Service
     2 @Transactional(rollbackFor=Exception.class)
     3 public class BaseMerchantCheckService extends DefaultQuasService<BaseMerchantCheck,String> {
     4     @Autowired
     5      private RoutePayforminfoConfigService routePayforminfoConfigService;
     6      @Autowired
     7      private RouteForwardConfigService routeForwardConfigService;
     8     public void saveInfo(BaseMerchantCheck             baseMerchantCheck,RoutePayforminfoConfig routePayforminfoConfig, RouteForwardConfig routeForwardConfig){
     9       persist(baseMerchantCheck);   //该方法不能将entity保存进数据库
    10       routePayforminfoConfigService.persist(routePayforminfoConfig);   //该方法可以保存进数据库
    11       routeForwardConfigService.persist(routeForwardConfig);   //该方法可以保存进数据库
    12 //  this.merge(baseMerchantCheck);
    13 //  routePayforminfoConfigService.merge(routePayforminfoConfig);
    14 //  routeForwardConfigService.merge(routeForwardConfig);
    15  }
    16 }    

    原因:直接通过persist()或者this.persist()调用该保存方法,是没有没有通过Spring注入事务的,所以不发保存进数据;

    解决方法:(1)jpa.persist();

         (2) @Autowired
                                 private RouteForwardConfigService routeForwardConfigService;  通过这种方式注入;

    5.eclipse->Help->eclipse marketplace:打不开,提示

    Cannot install remote marketplace locations: Connection failed
    This is most often caused by a problem with your internet connection. Please check your internet connection and retry.

    解决方案是修改eclipse.ini,然后重启eclipse

    -vmargs
    -Xmx512m
    ...
    -Djava.net.preferIPv4Stack=true

    6.导入maven项目到eclipse:pom.xml第一行报错:org.apache.maven.archiver.mavenarchiver.getmanifest

    原因:是eclipse的maven插件存在问题:maven的配置文件不是最新的

    解决办法:

    1.安装插件:help ->Install New Software -> add:http://repo1.maven.org/maven2/.m2e/connectors/m2eclipse-mavenarchiver/0.17.2/N/LATEST/

    ->点击 next 前,将 eclipse Install 窗口右下角的 Contact all update sites during install to find required software 选项取消掉->一直next confirm 安装更新 提示重启eclipse。

    2.选中项目,右键maven update project。

    (参考自:https://blog.csdn.net/m0_37355951/article/details/72954015)

     7.加注解:@Component无效,运行项目报错:No qualifying bean of type [kklazy.reportquery.service.DbPropertiesService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

    原因:@Component导包错误:导的不是spring的包,是import org.osgi.service.component.annotations.Component;

    改正:导入Spring框架的包:import org.springframework.stereotype.Component;

    8.Unsupported major.minor version 52.0解决办法(参考自:https://blog.csdn.net/superit401/article/details/72731381)

    stanford parser和jdk版本对应关系J2SE 8 = 52,J2SE 7 = 51,J2SE 6.0 = 50

    一般情況下需要先查看配置的版本是否一致:

    1)看看你系统的jdk环境变量配置的是jdk那个版本

    2)Windows—— Preferences——Java——Compiler——设为jdk1.8

    3)在此页面的Java——Installed JREs——设为jdk1.8

    4)关闭此页面,项目右键(或者core包)——Build Path(也可是Properties)——Configure Build Path——Java Build Path——Libraries下面的JRE System Library改为jdk1.8(此处设置见参考3),保证旁边的Order and Export这个jdk与之相同

    5)同页面的Java Compiler选项改为jdk1.8

    6)同页面的Project Facets——右侧的Java改为1.8(此项也可以不改)

    7)如果上述还不管用的话试试:

    修改org.eclipse.wst.common.project.facet.core.xml:
    打开项目所在的文件夹,打开.settings文件夹,修改里面的“org.eclipse.wst.common.project.facet.core.xml”文件

    如我的路径是:D:cctv5cmsmaven.1490956540309cms-cmscms-core.settingsorg.eclipse.wst.common.project.facet.core.xml

    (8)如果上述步骤都已经版本统一,还不管用的话,检查pom文件中是否配置jdk版本,如果有,改为统一版本。代码如下:

    或者:

    <properties>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
      <java.version>1.7</java.version>
     </properties>

    (9)如果上述所有步骤都执行还是不行,俺就要考虑java框架使用的版本是否支持该jdk的版本,比如:

    jdk1.7 不支持 springboot 最新版本2.0.0以及以上的版本

    配置好 springboot 项目之后启动程序,出现如下错误,是 jdk 版本与 springboot 版本不兼容导致的,也可以说是因为使用了默认的系统中的 jdk 且版本太低,不能编译执行高版本的 springboot 程序

    9.java项目上出现红色感叹号!,不能运行

    (1)一般情况下:出现红色感叹号“直接右击项目–>build path–>Configure build path找到Libraries这一项 ,看看哪个jar包报错删了clean一下就好了。

    (2)但是本人打开Libraries,没有出现任何报错的jar.这个时候就需要打开:窗口中的MarKers分页(或者通过主菜单window—>show view –>markers)/或者problems分页,终于发现存在的错误:project is missing required library

    然后本人搜了下:出现这种情况的原因是在你的project的build path Library中存在重复并且冲突的jar包,解决方案: 1、右击你的project——>Build path——>Configure build Path; 2、在弹出的窗口中选择,Library标签页; 3、在下面所列出的jar包中寻早相互重复、冲突的jar包,删除之; 4、点击确定关闭窗口,在eclipse自动重新build workspace后问题就解决了。

    这时候我重新打开Libraries:出现了错误的包,竟然 出现了错误的包,估计是我电脑刚才睡着了。。。。。----》remove-->apply--->OK---->project:build project   ===========》问题解决,(^-^)V

     

    10.Exception in thread "main" java.lang.UnsupportedClassVersionError: runjettyrun/Bootstrap : Unsupported major.minor version 52.0

    Exception in thread "main" java.lang.UnsupportedClassVersionError: runjettyrun/Bootstrap : Unsupported major.minor version 52.0
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:792)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)

     现在总结的原因是jdk和jre的版本不一致造成的。

    (1)右击项目-》properties-》java compiler:

    (2)jre版本:window->Preference->java->Installed JREs,之前1.8,现改成1.7。如图

    (3)查看系统环境:java -version:是否是1.7,若不是,改成1.7

    (4)最后使用jetty运行run,还是不支持,查看jetty版本:Run Configucations:如图,修改成6.1.26.重新启动项目,OK,启动成功

    11.Jdk8安装后,重新安装jdk1.7,环境变量java_home重新设置后,linux命令:java -version依然是1.8。

    (1)查看命令行重启了没:修改环境变量是需要重启命令行的。

    (2)若已经重启。那然后命令行输入:where java     结果如下图

    这是因为安装完1.8后,并创建在C:Program Files (x86)Common FilesOracleJavajavapath这个目录中,安装程序会自动将这个路径设置到环境变量的系统属性Path中,所以如果我们新设置的路径没有放在它的前面,就会出现不起作用的情况。
    解决办法:删除path中C:ProgramDataOracleJavajavapath,或者将要生效的jdk路径放在其前面。

    如图,把%java_home%in移到C:Program Files (x86)Common FilesOracleJavajavapath前面,重新输入命令行java -version,果然,生效。

     

  • 相关阅读:
    react按钮防抖
    mac解决 gyp: No Xcode or CLT version detected!
    offsetTop、getBoundingClientRect().top
    纯前端实现微信自定义分享
    redux概念
    数字验证码多个输入框实现一个输入框效果
    使用vue-cli脚手架工具搭建vue工程项目以及配置路由
    jq实现广告栏单行或者多行上下无缝接滚动
    ant pagination分页
    小程序广告位上下滚动的效果
  • 原文地址:https://www.cnblogs.com/whhjava/p/7977532.html
Copyright © 2020-2023  润新知