Java代码由版本导致的编译问题
一、Could not find the main class Program will exit 解决方案
起初你或许会认为是一个莫名其妙的错误,因为代码根本一点问题的都没有,可运行期间总是报这个错,比较郁闷。出现Could not find the main class.program will exit和java.lang.UnsupportedClassVersionError 错误的原因,是因为我们使用高版本的JDK编译的Java class文件试图在较低版本的JVM上运行,所报的错误。
“Could not find the main class. Program will exit.” I just installed the latest available Eclipse version (3.2 milestone 5) and couldn’t run my ANT builds anymore. The error I got in the alert box was “Could not find the main class. Program will exit”
根源分析:可能是在打开方式中的javaw版本过低。比如jdk1.5编译的class文件用1.4的javaw打开就会出现这个问题。
解决方法1: 控制面板->文件夹选项->文件类型->JAR下面的<高级>按纽
<操作>下面选open , 点右边的<编辑>,修改javaw路径,如:"C:\Program Files\Java\jdk1.5.0_10\bin\javaw.exe" -jar "%1" "%*"
解决方法2: 还有一种情况是:
变量配的....(多了点...)
就两个就够用了(或者一个...)
JAVA_HOME=D:\jdk1.6
PATH=%JAVA_HOME%\bin;
应该ok了。还有你的 bin目录 一定要在 D:\jdk1.6 这个下面,如果还有别的目录 那么 把它加上... e.g. D:\jdk1.6\XXXX
解决方法3: 在Eclipse窗口-->首选项-->Java-->编译器-->JDK一致性-->编辑器一致性级别,从5.0改到1.4就可以了。
在eclipse上的配置,可以参考https://www.cnblogs.com/anuoruibo/archive/2012/04/04/2432156.html。
扩展知识:java中必须有main函数吗? 如果是单纯的javaApplication(java应用程序)应该有main()函数作为入口,但是像jsp或者是applet等都是不需要main()函数。
二、Unsupported major.minor version 52.0解决办法。
可能上次设置完成后,第二次无法打开,如图:

1 J2SE 7 = 51, 2 J2SE 6.0 = 50, 3 J2SE 5.0 = 49, 4 JDK 1.4 = 48, 5 JDK 1.3 = 47, 6 JDK 1.2 = 46, 7 JDK 1.1 = 45
Unsupported major.minor version 52.0: 看到Unsupported你是不是会想到jdk高版本能兼容低版本,但是低版本不能兼容高版本,不错,猜对了,其实就是这个意思。这个错误意思是你项目用JDK1.8运行过,现在又在本地的eclipse等开发工具或者本地环境变量为低版本的jdk1.7或者jdk1.6下运行,eclipse会说:“本地jdk版本太低,不支持这个jdk1.8编译过的项目运行”。
你看看你本地是报52还是51或者其他的错。
接下来配置这几个地方jdk要一致:
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
1 本文链接:http://blog.csdn.net/superit401/article/details/72731381
2 参考1:https://www.zifangsky.cn/600.html
3 参考2:http://bbs.csdn.net/topics/391873068
4 参考3:http://www.oschina.net/question/207494_84715
指定eclipse JDK版本,解决Incompatible JVM问题,如图
Version 1.6.0_161 of the JVM is not suitable for this product.Version:1.8 or greater is required.
这说明JDK版本不支持。
解决方法1:把系统环境变量配置为JDK1.8
解决方法2:在eclipse目录下的eclipse.ini文件前面添加两行
-vm
C:/Program Files/Java/jdk1.8.0_151/bin/javaw.exe
注意:两种方法都需要安装对应的JDK版本。
三、Eclipse版本和JDK版本之间的对应关系,及选择标准
要注意的是Eclipse版本和JDK版本之间的对应关系
参考文章:1. Eclipse的下载以及版本介绍(详细)。
Eclipse最初是由IBM公司开发的替代商业软件Visual Age for Java的下一代IDE开发环境,2001年11月贡献给开源社区,现在它由非营利软件供应商联盟Eclipse基金会。Eclipse的设计思想是:一切皆插件。Eclipse核心很小,其它所有功能都以插件的形式附加于Eclipse核心之上。Eclipse基本内核包括:图形API(SWT/Jface),Java开发环境插件(JDT),插件开发环境(PDE)等。Eclipse各版本发版时间,查看Eclipse版本信息:eclipse<安装目录>/readme/readme_eclipse.html,这个html文件说明了版本信息、JDK环境要求、版本新特性等。
| 代号 | 平台版本 | 项目 | 主要版本发行日期 | SR1发行日期 | SR2发行日期 |
|---|---|---|---|---|---|
| N/A | 3.0 [1] | N/A | 2004年6月21日 | N/A | N/A |
| N/A | 3.1 | N/A | 2005年6月28日 | N/A | N/A |
| Callisto | 3.2 | Callisto projects | 2006年6月30日 | N/A | N/A |
| Europa | 3.3 | Europa projects | 2007年6月29日 | 2007年9月28日 | 2008年2月29日 |
| Ganymede | 3.4 | Ganymede projects | 2008年6月25日 | 2008年9月24日 | 2009年2月25日 |
| Galileo | 3.5 | Galileo projects | 2009年6月24日 | 2009年9月25日 | 2010年2月26日 |
| Helios | 3.6 | Helios projects | 2010年6月23日 | 2010年9月24日 | 2011年2月25日 |
| Indigo | 3.7 | Indigo projects | 2011年6月22日 | 2011年9月23日 | 2012年2月24日 |
| Juno | 4.2 [2] | Juno projects | 2012年6月27日 | 2012年9月28日 | 2013年2月22日 |
| Kepler | 4.3 | Kepler projects | 2013年6月26日 | 2013年9月28日 | 2014年2月28日 |
| Luna | 4.4 | Luna projects | 2014年6月25日 | 2014年9月23日 | 2015年2月25日 |
| Mars | 4.5 | Mars projects | 2015年6月24日 | 2015年9月22日 | 2016年2月24日 |
| 版本代号 | 平台版本 | 主要版本发行日期 | SR1发行日期 | SR2发行日期 | 需要的JDK最低版本 |
| Callisto | 3.2 | 2006年6月26日 | N/A | N/A | JDK1.4 |
| Europa | 3.3 | 2007年6月27日 | 2007年9月28日 | 2008年2月29日 | JDK1.5 |
| Ganymede | 3.4 | 2008年6月25日 | 2008年9月24日 | 2009年2月25日 | JDK1.5 |
| Galileo | 3.5 | 2009年6月24日 | 2009年9月25日 | 2010年2月26日 | JDK1.5 |
| Helios | 3.6 | 2010年6月23日 | 2010年9月24日 | 2011年2月25日 | JDK1.5 |
| Indigo | 3.7 | 2011年6月22日 | 2011年9月23日 | 2012年2月24日 | JDK1.5 |
| Juno | 3.8及4.2 | 2012年6月27日 | 2012年9月28日 | 2013年3月1日 | JDK1.5 |
| Kepler | 4.3 | 2013年6月26日 | 2013年9月27日 | 2014年2月28日 | JDK1.6 |
| Luna | 4.4 | 2014年6月25日 | 2014年9月25日 | 2015年2月27日 | JDK1.6 |
| Mars | 4.5 | 2015年6月24日 | 2015年9月22日 | 2016年2月24日 | JDK1.7 |
| 版本代号 | 平台版本 | 主要版本发行日期 | .1发行日期 | .2发行日期 | .3发行日期 | 需要的JDK版本 |
| Neon | 4.6 | 2016年6月22日 | 2016年9月28日 | 2016年12月21日 | 2017年3月23日 | JDK1.8 |
| Oxygen | 4.7 | 2017年6月28日 | 2017年9月27日 | 2017年12月20日 | 2018年3月21日 | JDK1.8 |
| Photon | 4.8 | 2018年6月27日 | 2018年9月 | 2018年12月 | 2019年3月 |
浙公网安备 33010602011771号