报错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,果然,生效。