方法/步骤
一般来说,如果使用高版本jdk编译之后的class文件,编译的时候没有带source和targe参数,再把class文件放到低版本环境下运行,会出现如图所示的错误:java.lang.UnsupportedClassVersionError: Test : Unsupported major.minor version
‘贰’ java编译,提示JDK版本错误!
错误原因:
类似错误均属于Java版本问题,即JDK版本过低,只要选择相对应的JDK版本编译即可。
48,49,50是Java编译器内部的版本号:
Unsupported major.minor version 51.0 对应于 JDK1.7(JRE1.7)
Unsupported major.minor version 50.0 对应于 JDK1.6(JRE1.6)
Unsupported major.minor version 49.0 对应于 JDK1.5(JRE1.5)
Unsupported major.minor version 48.0 对应于 JDK1.4(JRE1.4)
解决办法:
仅仅按照网上说的设置JAVA_HOME 等方案是不能解决问题的。
下面是我的解决办法:
(1)在eclipse中新增dk1.7的版本
(3)将jdk1.6相关条目选中,然后点右侧按钮 Remove ,将jdk1.6删除。
(4)点右侧 Add Library 弹出对话框,选中jdk1.7的条目,我这里显示的是 JRE System Library 然后点击next。
(5) 在第四步弹出的对话框上,激活 Alternate JRE 选项,并在下拉列表中,选择 jdk1.7 然后点Finish。
(6)在第五步完成后,从Libraries 选项卡切换到 Order and Export 选项卡,并在jar列表中选中 JRE System Library[jdk1.7] 然后 点 ok完成设置。
(7)修改项目启动jdk为1.7;项目右键 -> Run As -> Run Configuration;选择Jre选项卡,alternate jre选择jre7,点击run即可运行。
总结
其实根本问题还是jre的配置问题。major.minor version,它相当于一个软件的主次版本号,只是在这里是标识的一个javaClass的主版本号和次版本号。
‘叁’ java 如何改变编译文件的jdk版本
如果你用的是MyEclipse的话 这样试试 window---preferences---java---installed JRES 添加一个1.5的
‘肆’ 请问下在myeclipse下可以编译java程序的jdk版本,放在ant编译怎么不通过,提示兼容性问题
给你一个建议,ant的具体用法是不需要太深入的了解,会读会用会改会,就能基本应付工作中所有问题了。我以前还是自己写ant,到后来发现没什么必要,现在用的ant就是从hibernate中帮助文档里找来的,功能很全面,常用的都有了。
‘伍’ java jdk版本问题
一、软件下载
1、下载JDK(下面分别是32位系统和64位系统下的版本)
http://download.oracle.com/otn-pub/java/jdk/7u9-b05/jdk-7u9-linux-i586.tar.gz?AuthParam=1350717577_ #32位
http://download.oracle.com/otn-pub/java/jdk/7u9-b05/jdk-7u9-linux-x64.rpm?AuthParam=1350717726_ #64位
# getconf LONG_BIT # 查看系统多少位
二、安装JDK7.0版本
1、先卸载服务器自带的jdk软件包
# java -version #查看服务器是否安装过jdk
java version "1.6.0_17"
OpenJDK Runtime Environment (IcedTea6 1.7.4) (rhel-1.21.b17.el6-i386)
OpenJDK Client VM (build 14.0-b16, mixed mode)
# rpm -qa |grep gcj #查看服务器安装的jdk软件包信息
libgcj-4.4.4-13.el6.i686
java-1.5.0-gcj-1.5.0.0-29.1.el6.i686
# yum -y remove java-1.5.0-gcj-1.5.0.0-29.1.el6.i686 #卸载软件包
2、安装jdk7.0
解压配置安装
# mkdir -p /usr/lib/jvm
# tar zxvf jdk-7u9-linux-i586.tar.gz -C /usr/lib/jvm
# mv /usr/lib/jvm/jdk1.7.0_09 /usr/lib/jvm/java7
3、添加jdk7.0到系统环境变量
#cp /etc/profile /etc/profile.bak #备份
#vi /etc/profile #编辑,在最后添加下面的内容
export JAVA_HOME=/usr/lib/jvm/java7
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
#source /etc/profile #使配置文件立即生效
由于系统中可能会有默认的其他版本JDK,所以,为了将我们安装的JDK设置为默认JDK版本,还要进行如下工作。
update-alternatives --install /usr/bin/java java /usr/lib/jvm/java7/bin/java 300
update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/java7/bin/javac 300
update-alternatives --install /usr/bin/jar jar /usr/lib/jvm/java7/bin/jar 300
update-alternatives --install /usr/bin/javah javah /usr/lib/jvm/java7/bin/javah 300
update-alternatives --install /usr/bin/javap javap /usr/lib/jvm/java7/bin/javap 300
执行下面命令,设置默认版本,此命令执行后,系统会列出当前存在的各种JDK版本,会提示你选择
# update-alternatives --config java
4、测试
# java -version # 测试是否成功
java version "1.7.0_09"
Java(TM) SE Runtime Environment (build 1.7.0_09-b05)
Java HotSpot(TM) Client VM (build 23.5-b02, mixed mode)
‘陆’ 要编译运行java程序需要安装什么
如果你需要运行java程序,只需安装JRE就可以了。如果你需要编写java程序,需要安装JDK。
先装JDK,把环境搭好再来个IDE基本上就可以开始写java代码了,Jdk ide开发工具 eclipse Idea
要是做web的话把tomcat,mysql装一下就可以开始做简单web了
JRE: Java Runtime Environment
JDK:Java Development Kit
JRE顾名思义是java运行时环境,包含了java虚拟机,java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的。
JDK顾名思义是java开发工具包,是程序员使用java语言编写java程序所需的开发工具包,是提供给程序员使用的。
JDK包含了JRE,同时还包含了编译java源码的编译器javac,还包含了很多java程序调试和分析的工具:jconsole,jvisualvm等工具软件,还包含了java程序编写所需的文档和demo例子程序。
‘柒’ 怎么知道Java class文件JDK编译的版本号
首先用一些二进制查看器打开class文件,比如od或者hexmp工具。
od -x hello.class
或者
hexmp hello.class
我们会看到类似于下面的输出:
feca beba 0000 3300
这里我们看到前四个字节是Java class的特殊符号,叫做magic字段,用来告诉JVM这是个class文件,之后的两个字节是minor版本号,再之后的两个字节是major版本号,我们看到时33,对应下表我们知道33时JDK1.7编译的版本号。
十六进制
JDK1.5 31
JDK1.6 32
JDK1.7 33
JDK8 34
因为Java是向后兼容的,所以高版本的兼容低版本的,所以有时候你遇到java报: unsupported major.minor version 51,那就是你用低版本的虚拟机去运行高版本JDK编译的class文件了,所以低版本的虚拟机就抱怨了。这里的51是十进制,也就是十六进制的33,及对应JDK1.7,如果出现这种错误,你肯定是使用低于1.7版本的虚拟机去运行这个了。