java打jar包的异常一:could not find the main class,java.lang.UnsupportedClassVersionError: Bad version numb

java打jar包的异常一:could not find the main class,java.lang.UnsupportedClassVersionError: Bad version numb。

原因:jdk版本冲突问题

参考文章:

http://jn3.141592654.blog.163.com/blog/static/27477260201031285943166/?hasChannelAdminPriv=true

一段在jcreator中能正常运行的代码,在myeclipse中

老是出现could not find the main class,program will exit。

这足可以说明代码没错,是程序的问题了。

原因和解决办法如下:

因为我们使用高版本的JDK编译的Java class 文件试图在较低版本的JVM上运行,所报的错误。  因为,高版本的JDK生成的class文件使用的格式,可能与低版本的JDK的.class文件格式不同。这样,低版本的JVM无法解释执行这 个.class文件,会抛出Couldnot find the main class.program will exit不支持的Class版本错误。 这个错误尤其在JDK5与JDK5之前的版本上表现明显。因为,JDK5在Java语法上作了不少增强,引入了一 些新的.class文件的元素,导致旧版本的JVM无法解释、执行.class文件。即使这个类并没有使用任何JDK5的新元素,但是JDK5生成 的.class文件,JDK1.4及其以前的JVM都无法辨认。

解决方法:

1. 弄清楚该程序是在哪个JDK版本下开发的 (JDK对于java学习者应该不能陌生)


2. 在myEclipse菜单->Windows->Proferences->java->Installs  Jres重新设置JDK路径,改为开发程序时的JDK版本(如上图)(我做到这一步就可以了!我的eclipse是7.0,jdk是6u13的。)

 

3.Windows->Proferences->java->Compiler,将compilercompliance level设置为与上面相同的JDK(如上图,如果你今天2011年到官方下载的JDK那可能是1.6的了,建议勾选1.6)

-----------------------------------------------------------------------------

对于项目来说,有时候出现版本问题也是跟编译级别有关系,那修改一下就可以了(如下图)

 

解决这个

 

 

方法二:换包,把相应项目不同版本的包换了,如我的项目本来是jdk1.5版本的,现在考到了jdk1.6版本的工具里,

 那么在项目名称处单击右键-——>“properties“    把1.6的包remove。

  (2)添加jdk1.5的包,单击add library。

 

 


<think>嗯,用户遇到了Java.lang.UnsupportedClassVersionError的问题,需要解决。这个错误通常是由于编译时的JDK版本高于运行时的版本导致的。比如,用JDK 8编译的类在JDK 7上运行就会报这个错。 首先,我应该回顾用户提供的引用内容。引用[1]提到删除build.xml中的某个文件,或者更换javassist.jar的版本,这可能是因为依赖库和JDK不兼容。引用[2]和[5]指出项目使用的JDK版本不致,比如开发环境用JDK5,家里用JDK6,导致编译错误。引用[3]和[4]给出了具体的解决步骤,比如在Eclipse中调整项目的JRE和编译器级别。 接下来,我需要整理出解决步骤。首先,检查并统JDK版本。确保编译和运行环境使用相同的版本。用户可能在Eclipse中需要修改项目的Build Path和Compiler compliance level,如引用[3]和[4]所述。然后,检查依赖库是否兼容当前JDK,如引用[1]提到的javassist.jar版本问题。此外,服务器配置如Tomcat的JDK版本也要检查,如引用[2]和[3]提到的Tomcat设置。 用户可能需要知道如何具体操作,比如在Eclipse中如何修改这些设置。例如,项目属性里的Java Build Path和Java Compiler设置。还要注意@Override注解在JDK5中的限制,避免语法错误,这点引用[2]和[4]提到过。 另外,Maven或Gradle项目可能需要调整构建配置中的JDK版本,确保构建工具使用正确的版本。最后,如果问题依旧,可能需要升级运行时环境或降级编译版本,保持致性。 需要将这些步骤清晰地分点说明,并引用相关的引用资料作为支持。同时,用户可能还想知道如何避免未来出现类似问题,比如统开发环境和生产环境的JDK版本,使用版本管理工具等。 总结下来,解决方案应括:统JDK版本、调整IDE设置、检查依赖库、服务器配置、构建工具配置以及版本升级或降级建议。同时,生成相关问题可以帮助用户深入理解问题,比如如何检查JDK版本、处理依赖冲突等。</think>### 解决Java版本不兼容导致的`UnsupportedClassVersionError`错误 #### 问题分析 `java.lang.UnsupportedClassVersionError: Bad version number in .class file` 错误通常是由于 **编译时使用的JDK版本高于运行时环境JDK版本** 导致的。例如,用JDK 8编译的类文件在JDK 7环境中运行会触发此错误[^2][^5]。 --- #### 解决步骤 ##### 1. **统JDK版本** - **检查编译与运行环境** 确保开发环境(IDE)和部署环境(如Tomcat、命令行)使用 **相同的JDK版本**。可通过以下命令验证: ```bash java -version # 查看运行时JDK版本 javac -version # 查看编译时JDK版本 ``` - **修改IDE的JDK配置** - **Eclipse**:右击项目 → `Properties` → `Java Build Path` → `Libraries` → 修改JRE版本[^3]。 - `Java Compiler` → 设置`Compiler compliance level`为与运行时致的版本(如1.5、1.6等)[^4]。 ##### 2. **检查依赖库兼容性** - 某些第三方库(如`javassist.jar`)可能与低版本JDK不兼容。需替换为兼容版本(如引用[1]中将3.16.1降级到3.15.0)[^1]。 ##### 3. **服务器配置对齐** - **Tomcat/JBoss等服务器**:在服务器配置中指定与项目致的JDK版本。例如,Eclipse中设置`Window → Preferences → Servers → Tomcat → JDK`[^5]。 ##### 4. **构建工具配置(Maven/Gradle)** - **Maven**:在`pom.xml`中配置`maven-compiler-plugin`,指定`<source>`和`<target>`版本: ```xml <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> ``` ##### 5. **代码语法适配低版本JDK** - **避免使用高版本语法**:例如,JDK 5中`@Override`仅用于重写抽象方法,不能用于实现接口方法[^2][^4]。 ##### 6. **升级运行时环境(可选)** - 如果无法降低编译版本,可升级运行时环境的JDK版本,使其匹配编译版本。 --- #### 示例场景 若项目在JDK 6开发但需在JDK 5运行: 1. 在Eclipse中设置`Compiler compliance level`为5.0。 2. 检查所有依赖库是否兼容JDK 5(如`javassist.jar`使用3.15.0)[^1]。 3. 修改Tomcat的JDK配置为5.0。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值