`
lintomny
  • 浏览: 225908 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

关于Bad version number in .class file的问题

阅读更多
休息也差不多了,不写程序总觉得有点不对劲。试着自己写一个类似struts中的路径配置工具吧,就是根据资源的逻辑名来进行前进路径的寻址功能。很简单,但毕竟自己的探索嘛。

学习之路总是并不平坦的,这不,一开始就遇到问题了:Bad version number in .class file。版本不对?可是我用的java以及javac都是JDK5呀,怎么回事?除了编译版本跟运行版本不一致外是不会出现这种可能的。突然想起前几天试了一下JDK6,把Eclipse的JDK编译器选成JDK6了。果然,将其改回去JDK5就行了。

呵呵,这也算是个小插曲吧。说不定也有人跟我一样一不小心傻冒了一回。
分享到:
评论
22 楼 JimmyLincole 2014-04-15  
panshunchang 写道
楼主,你的问题Bad version number in .class file

跟jdk有关,没错,但是你没有找到本质所在!我今天也遇到这个问题!

请教了别人,网上找了资料,最后确定是由于 使用了对象类型跟基本型别做比较造成的,比如: Double s = Double.valueOf("3") , int i = 1;

if(s>i){} 
这样的语言,jdk6是可以正常编译的,但是在低版本的jdk,就会出现
Bad version number in .class file错误,如果把改为 if(s.doubleValue()>i)
转型一下,就可以了,jdk可以使用低些版本也没问题

panshunchang 写道
楼主,你的问题Bad version number in .class file

跟jdk有关,没错,但是你没有找到本质所在!我今天也遇到这个问题!

请教了别人,网上找了资料,最后确定是由于 使用了对象类型跟基本型别做比较造成的,比如: Double s = Double.valueOf("3") , int i = 1;

if(s>i){} 
这样的语言,jdk6是可以正常编译的,但是在低版本的jdk,就会出现
Bad version number in .class file错误,如果把改为 if(s.doubleValue()>i)
转型一下,就可以了,jdk可以使用低些版本也没问题



请问,
Double s = Double.valueOf("3") ;
int i = 1;

if(s>i){} 这是不是boxing和unboxing的问题呀?
如果是boxing和unboxing的问题,这个特性应该是5.0引入的吧,按道理用jdk5.0是可以编译?

不太懂,不知道哪位愿意帮忙解释一下,万分感谢!
21 楼 JimmyLincole 2014-04-15  
我使用1.5.0_06的jdk
把apache-tomcat-7.0.52换成apache-tomcat-6.0.13就解决了!!
20 楼 dabing69221 2013-06-19  
"原来MyEclipse 6.5的JRE是5.0的" 气死了,一直都没遇到这个问题,今天头一次!
19 楼 ldwtill 2012-08-13  
还是评论对这个问题的讨论比较全面啊
18 楼 adyuebanwan 2012-08-01  
我也是遇到这个问题,但是jdk版本都是1.5还是没解决,后来发现lib下面的包有个重复了,虽然没有引到框架下,但是删除掉就好了
17 楼 ps329795485 2012-02-13  
汗,我还真的傻帽了一回
16 楼 theoffspring 2011-05-30  
第二个原因就解决了,myec6.5,6.6都是tomcat jdk和myec用的不一样的原因。
15 楼 vinsonlai 2010-08-27  
编译用的JDK版本与运行时的JDK版本不一致,检查Java Compiler中的Compiler compliance level设置是否正确。 
14 楼 landsnail 2010-08-11  
我这个“说不定也有人跟我一样一不小心傻冒了一回”,顶贴啊!
13 楼 yuanke52014 2010-06-27  
使用MyEclipse 6.5,在组织好测试用例之后,发现Java Compiler -> Compiler compliance level是5.0。之前一直在使用5.0的级别进行编译运行。当我切换Compiler compliance level到6.0以后,重新编译工程,运行测试用例,抛出异常:

java.lang.UnsupportedClassVersionError: Bad version number in .class file
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClass(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClasses(RemoteTestRunner.java:425)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:445)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)

从第一行“java.lang.UnsupportedClassVersionError: Bad version number in .class file”,它说在类文件中发现了错误的版本号,我以为是因为启动了Project -> Build Automatically自动编译,每次编译没有修改类路径下类文件的版本号,于是禁用了Build Automatically,删除WebRoot\WEB-INF\classes下类文件,手动指定Compiler compliance level为6.0,重新编译,生成了类文件,再重新执行程序的时候,依然是上面的异常。

仔细琢磨了一下,原来MyEclipse 6.5的JRE是5.0的,虽然我设置了Compiler compliance level为6.0,其实依然是再5.0的JRE下进行编译的。

打开Installed JREs,重新Add一个JRE,指定一个JRE路径,使用自己安装的JDK 6.0,也就是JRE 6的环境进行编译,这时再运行测试用例,就能正常编译执行了。





========================================================================================



有时候,在MyEclipse运行application程序时会呈现如下过错:
java.lang.UnsupportedClassVersionError: Bad version number in .class file
造成这种过错的原由是ni的支撑Tomcat运行的JDK版本与支撑application运行的JDK版本不一致导致的.
那么如何解决上面的问题呢?
措施显而易见:把它们的JDK版本改成一致.
步骤如下:
1.Window --> Preferences -->Java --> compiler中的compiler compliance level对应的下拉菜单中选择JDK版本.
2.Window --> Preferences -->MyEclipse --> Servers -->Tomcat --> Tomcat n.x -->JDK中的Tomcat JDK name下的下拉菜单中选择自身电脑上安装的JDK版本(必需与步骤1中的JDK版本一致).
如果还是没有解决,不用焦急,因为有些MyEclipse版本自带有JDK版本,所以也要将它改过来.
3.Window --> Preferences -->Java -->Installed JRES,然后在右边选择与步骤1和2版本一致的JDK版本,如果没有,可以自身添加.然后选中就可以了.

12 楼 qingwaxw1980 2010-05-24  
操作系统中设置的环境变量与软件中的使用的JDK变量版本不一致。
11 楼 smartyu586 2010-05-18  
我也出现了。。搞不定。。版本都一致了还是不行!~  
10 楼 zhhphappy 2009-11-23  
eclipse的preferences>Installed JREs里面添加一个jre6并且勾选中是使用该jre就好了
9 楼 sunjiesh 2009-06-05  
我也搞了很长时间,终于发现时我所需要的继承类所在的jar是使用jdk1.6编写的,后来重新把包改为jdk1.5就可以了。
8 楼 天机老人 2009-03-23  
是啊,呵呵我也又这个问题啊!
7 楼 panshunchang 2009-03-03  
楼主,你的问题Bad version number in .class file

跟jdk有关,没错,但是你没有找到本质所在!我今天也遇到这个问题!

请教了别人,网上找了资料,最后确定是由于 使用了对象类型跟基本型别做比较造成的,比如: Double s = Double.valueOf("3") , int i = 1;

if(s>i){} 
这样的语言,jdk6是可以正常编译的,但是在低版本的jdk,就会出现
Bad version number in .class file错误,如果把改为 if(s.doubleValue()>i)
转型一下,就可以了,jdk可以使用低些版本也没问题
6 楼 唯快不破 2008-12-22  
重新编译一次就行了,原来用1.5的,后来用1.6了就用1.6再编译一次。
在eclipse下clean一次就行了
5 楼 可乐熊 2008-10-24  
这个问题我今天也遇到了,开始也搞不懂,后来发现我的Eclipse用的是jdk1.6,而我的web服务器用的是jdk1.5,我在Eclipse上用jdk1.6编译的class文件放在jdk1.5的web服务器上运行就会出问题,我将我自己的Eclipse的jdk版本改为1.5,问题就解决了。
4 楼 yangzhibin_java 2008-09-26  
我也出现了,还没搞定呢
3 楼 wuhuawu09 2008-07-07  
同样遇到这个问题。。

相关推荐

    Bad version number in .class file 错误

    "Bad version number in .class file" 是一个在Java编程中常见的错误,通常出现在尝试运行或编译不兼容的.class文件时。这个错误意味着.class文件(Java字节码)的版本与正在执行它的JVM(Java虚拟机)版本不匹配。...

    java.lang.UnsupportedClassVersionError Bad version number in .class file异常的解决办法

    ### java.lang.UnsupportedClassVersionError: Bad version number ...通过上述方法,可以有效地解决`java.lang.UnsupportedClassVersionError: Bad version number in .class file`异常问题,并确保项目能够平稳运行。

    Flash Builder 4 正式版中 解决使用LCDS ES2 Data/Services 出现 Bad version number in .class file 问题

    在使用Flash Builder 4开发基于LCDS (LiveCycle Data Services) ES2的项目时,可能会遇到一个名为"Bad version number in .class file"的错误。这个错误通常表明编译后的类文件与运行环境中的Java虚拟机(JVM)版本...

    tomcat:bad version number in class file的解决方法

    "tomcat:bad version number in class file的解决方法" Tomcat 是一个流行的开源 Web 服务器和 servlet 容器,广泛应用于 Web 应用程序的开发和部署。然而,在使用 Tomcat 时,可能会出现 "bad version number in ...

    AXMLPrinter2、baksmali、smali、dex2jar

    number in .class file at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at ...

    scraper-one:第一个仅使用 Java 的刮刀项目

    我花了一整天来解决这个问题:( jdk 1.7.0_51 上的 UTC+3 不正确使用 bash 运行 scraper-1.0-SNAPSHOT.jar 时遇到 java.lang.UnsupportedClassVersionError: Bad version number in .class file。 在 Windows 上使用...

    java异常解决方案.docx

    * java.lang.UnsupportedClassVersionError: Bad version number in .class file + 解决方案:检查 Java 的版本是否正确,是否存在版本不兼容的问题,尝试使用 compatible 的 Java 版本来解决问题。 四、JSP 异常...

    处理MyEclipse中出现的问题.txt

    具体到文中提到的错误,“Bad version number in .class file”表明.class文件的版本号与当前环境中的JDK版本不匹配。 #### 解决方案 为了解决这一问题,我们需要确保编译环境和运行环境中的JDK版本一致。以下是...

    XStream和Xpp3实现对象到XML的互转参考文档

    另一方面,如果遇到`java.lang.UnsupportedClassVersionError: Bad version number in .class file`,这意味着编译的JDK版本与运行时的JDK版本不一致,你应该确保两者版本匹配,例如从1.6更换为1.5。 接下来,我们...

    servlet2.4doc

    getAttribute(String) - Method in class javax.servlet.ServletRequestWrapper The default behavior of this method is to call getAttribute(String name) on the wrapped request object. getAttribute(String...

    eclipse使用图解和最最常用的快捷键

    当遇到“Bad version number in .class file”错误时,通常是因为编译环境和运行环境的JRE版本不匹配。解决这个问题,可以通过以下步骤: - 右键点击项目,选择“Properties”。 - 在左侧菜单选择“Java Build ...

    java程序调试错误收集

    - **问题描述**:在部署或编译项目时遇到`java.lang.UnsupportedClassVersionError: Bad version number in .class file`异常。 - **解决方案**: - 检查当前使用的JDK版本是否与项目编译时所用的JDK版本一致。 - ...

    Java程序调试与错误收集--非代码引起的报错

    在Java应用部署过程中,如果遇到`java.lang.UnsupportedClassVersionError: Bad version number in .class file`这样的异常,通常是因为当前运行环境(如MyEclipse中使用的JDK版本)与编译时使用的JDK版本不一致。...

    Hibernate4.0

    java.lang.UnsupportedClassVersionError: Bad version number in .class file ``` 这表明类文件的版本高于JVM所支持的版本。为了解决这个问题,需要确保开发和部署环境中使用的JDK版本至少为Java 1.6。如果项目中还...

    BobBuilder_app

    In this version I have done away with the b+tree and hash index in favor of my own MGIndex structure which for all intents and purposes is superior and the performance numbers speak for themselves....

    java 遇到的各种异常

    `java.lang.UnsupportedClassVersionError`: Bad version number in .class file** - **异常描述**:类文件版本与JVM版本不兼容。 - **原因分析**:编译时使用的JDK版本高于运行时的JDK版本。 - **解决方案**: -...

    php.ini-development

    development version only in development environments as errors shown to ; application users can inadvertently leak otherwise secure information. ; This is php.ini-development INI file. ;;;;;;;;;;;;...

    Delphi7.1 Update

    visit the Borland Registered User web site to obtain a localized readme file that may contain important late- breaking information not included in this readme file.IMPORTANT: Delphi must be closed ...

Global site tag (gtag.js) - Google Analytics