java常见报错整理
2022-01-30 11:23:21
130次阅读
0个评论

报错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等方法,不报错,也不插入数据库:

如:

@Service
@Transactional(rollbackFor=Exception.class)
public class BaseMerchantCheckService extends DefaultQuasService<BaseMerchantCheck,String> {
    @Autowired
     private RoutePayforminfoConfigService routePayforminfoConfigService;
     @Autowired
     private RouteForwardConfigService routeForwardConfigService;
    public void saveInfo(BaseMerchantCheck             baseMerchantCheck,RoutePayforminfoConfig routePayforminfoConfig, RouteForwardConfig routeForwardConfig){
      persist(baseMerchantCheck);   //该方法不能将entity保存进数据库
      routePayforminfoConfigService.persist(routePayforminfoConfig);   //该方法可以保存进数据库
      routeForwardConfigService.persist(routeForwardConfig);   //该方法可以保存进数据库
//  this.merge(baseMerchantCheck);
//  routePayforminfoConfigService.merge(routePayforminfoConfig);
//  routeForwardConfigService.merge(routeForwardConfig);
 }
}

原因:直接通过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:\cctv5cms\maven.1490956540309\cms-cms\cms-core\.settings\org.eclipse.wst.common.project.facet.core.xml

image.png


(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 程序

image.png

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

image.png

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

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

image.png

image.png

image.png

然后本人搜了下:出现这种情况的原因是在你的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:


image.png

(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 Files\Oracle\Java\javapath\这个目录中,安装程序会自动将这个路径设置到环境变量的系统属性Path中,所以如果我们新设置的路径没有放在它的前面,就会出现不起作用的情况。
解决办法:删除path中C:\ProgramData\Oracle\Java\javapath,或者将要生效的jdk路径放在其前面。

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

image.pngimage.png

收藏 0 0

登录 后评论。没有帐号? 注册 一个。

admin

官方人员
  • 0 回答
  • 0 粉丝
  • 0 关注