一个java的class文件是一个二进制文件,其中前四个字节是magic位,第五到第六个字节对应于minor和major,下面是这个类文件版本与JDK的对应关系:
jdk | minor | major |
1.0 | 45 | 3 |
1.1 | 45 | 3 |
1.2 | 46 | 0 |
1.3 | 47 | 0 |
1.4 | 48 | 0 |
1.5 | 49 | 0 |
1.6 | 50 | 0 |
1.7 | 51 | 0 |
所以当见到类似如下的错误时就应该知道问题出在哪里了:
错误的类文件: ...\jetty-util-8.0.4.v20111024.jar(org/eclipse/jetty/util/TypeUtil.class)
类文件具有错误的版本 50.0,应为 49.0
注:这个错误是提示你应该使用jdk1.6而不是jdk1.5。
小技巧,在class文件所在目录,可以使用javap命令查看版本号
如:javap -verbose AGateway,会显示以下内容,找到major version:
public abstract class org.smslib.AGateway extends java.lang.Object
SourceFile: "AGateway.java"
InnerClass:
#56= #29 of #54; //QueueManager=class org/smslib/AGateway$QueueManager of class org/smslib/AGateway
#58= #10 of #54; //Statistics=class org/smslib/AGateway$Statistics of class org/smslib/AGateway
public #60= #59 of #54; //GatewayAttributes=class org/smslib/AGateway$GatewayAttributes of class org/smslib/AGateway
public final #62= #61 of #54; //AsyncEvents=class org/smslib/AGateway$AsyncEvents of class org/smslib/AGateway
public final #64= #63 of #54; //GatewayStatuses=class org/smslib/AGateway$GatewayStatuses of class org/smslib/AGateway
public final #66= #65 of #54; //Protocols=class org/smslib/AGateway$Protocols of class org/smslib/AGateway
public final #136= #135 of #266; //MessageClasses=class org/smslib/InboundMessage$MessageClasses of class org/smslib/Inbo
undMessage
public final #170= #169 of #269; //DeliveryStatuses=class org/smslib/StatusReportMessage$DeliveryStatuses of class org/sm
slib/StatusReportMessage
minor version: 0
major version: 51
Constant pool:
......
相关推荐
总结:Java类文件的`major_version`和`minor_version`是识别类文件格式的关键,不同的版本号对应着不同版本的JVM。在开发和部署过程中,确保编译环境和运行环境的Java版本一致性是避免`Unsupported major.minor ...
原来spring-2.5.5.jar有一个检查JDK版本号的类,编码质量略低,导致1.8被误认为未达到“JDK1.5以上版本”这个要求。。。 org.springframework.core.JdkVersion 于是找到一个spring-core-3.x.RELEASE.jar,用其中的...
版本号1.8.0_201指的是该JDK的特定更新版本,其中“1.8”代表主版本号,表明这是Java 8的一个版本,“0_201”则表示次要更新,用于修复错误、添加改进和增强功能。 **Java 8的重要特性** 1. **Lambda表达式**:这...
- **下载合适版本的驱动**:根据当前使用的JDK版本下载对应的MySQL JDBC驱动版本。 - 例如,对于JDK 8,建议使用MySQL Connector/J 5.1.x 或 8.0.x 版本。 - 确保在导入jar包时选择了与JDK版本相匹配的驱动程序版本...
2. 文件版本:接着是两个2字节的次版本号和主版本号,用于标识Class文件的版本,与JVM的版本对应,确保兼容性。 3. 表结构:表是Class文件的核心,包括常量池表、访问标志表、类索引、父类索引、接口索引集合、字段...
在描述中提到的"jdk7_jdk8-oracle19C所需驱动"意味着这个压缩包可能包含ojdbc7和ojdbc8两个版本的驱动,以满足不同Java版本的兼容性需求。Oracle 19C数据库的ojdbc驱动通常包含在ojdbc.jar或者ojdbcxx.jar文件中,...
字节码版本号52.0对应于Java 8,因为Java的字节码版本号随着Java版本的升级而变化。 当你试图在不支持Java 8的环境中打开或运行这些字节码文件时,IntelliJ IDEA无法正确解析,因此会出现上述错误。要解决这个问题...
在Java编程中,有时我们需要与Microsoft Access数据库进行交互,特别是在处理小型数据存储或与遗留系统集成时。然而,Java的标准数据库连接API(JDBC)原生并不支持Access数据库。为了解决这个问题,开发者通常会...
2. **版本号**:紧跟魔数之后的是两个无符号短整数,分别为**次要版本号(Minor Version)**和**主要版本号(Major Version)**,它们指示了Class文件所对应的JDK版本。例如,版本号0x34对应于JDK 1.8。 3. **常量...
例如,主版本号为46表示编译该Java类文件的JDK版本为1.1,而主版本号为52则表示编译版本为1.8。 3. 常量池(Constant Pool):紧随版本信息之后的是常量池,它包含了程序中用到的所有字符串、类、接口、方法等信息...
注:下文中的 *** 代表文件名中的版本号。 # 【bcprov-jdk15on-***.jar中文-英文对照文档.zip】 中包含: 中文-英文对照文档:【bcprov-jdk15on-***-javadoc-API文档-中文(简体)-英语-对照版.zip】 jar包下载地址...
版本号1.8.0_101指的是JDK的第101次更新,属于Java 8的主要更新序列之一。在Windows操作系统环境下,JDK提供了完整的Java环境,包括Java编译器(javac)、Java解释器(java)、Java虚拟机(JVM)以及各种开发和调试...
一旦添加了 web 服务客户端,我们可以生成对应的 JAVA 类。 1. 右键点击项目名称,选择“New”->“Class”。 2. 在“New Java Class”对话框中,输入类名,例如“TestSAPWebservice”。 3. 选择“OK”,以便生成 ...
3. **Java运行环境**: JDK提供Java虚拟机(JVM),使得Windows系统可以运行字节码(.class文件)形式的Java程序。 4. **版本号**: "8u74"表示这是Java 8的第74个更新版本,其中"u"代表"update"。 **Linux版JDK ...
通过使用JDK中的javac编译器来编译Java文件,会生成对应的.class文件。对于编译过程中出现的错误,需要根据提示进行修改,并重新编译。 运行.class类文件是通过JDK中的Java运行时环境(JRE)来完成的。使用命令行...
`11.2.0.1.0`是Oracle数据库的版本号,表明此驱动与Oracle 11g Release 2数据库兼容。 3. **使用方法**: 在Java项目中,为了使用`ojdbc6-11.2.0.1.0.jar`,你需要将其添加到项目的类路径中。这可以通过IDE的设置...
- **安装目录**:通常情况下,JDK会被安装到一个指定的目录下,例如`C:\Program Files\Java\jdk-版本号`。 ##### 3. 配置环境变量 - **Path环境变量**:为了让用户能够在任意路径下使用JDK提供的命令(如javac和...
- **步骤4**: 在"VM安装目录"中,浏览并找到JDK的安装路径,通常是`C:\Program Files\Java\jdk版本号`,然后点击"完成"(Finish)。 ### 4. 配置Eclipse的工作空间JRE - **步骤1**: 在"首选项"窗口中,选择"工作区...
2. 自动装箱/拆箱(Autoboxing and Unboxing):自动装箱允许基本数据类型与对应的包装类之间进行无缝转换,简化了代码,提高了编写效率。 3. 枚举类型(Enums):JDK5.0引入了枚举类型,使得常量的定义更加规范,...