问题描述
|
我已经用Java 1.5版编译了一个类。
当我在服务器中部署它时,它给了我错误的版本错误。
如果我使用Java版本1.5.0_06进行编译,那么服务器是否具有Java版本1.5.0_06会有所不同。
1.版本中的最后一个数字也有区别吗?
2.
javap -verbose ClassName
给我次要和主要版本,但是如何知道该类使用哪个更新进行编译?
谢谢,
桑迪普
解决方法
JRE / JDK 1.5.0_06是Java 1.5(或Java 5,具体取决于星期几)的实现。
因此,没有任何区别,针对Java 1.5编译的类在该版本上应该可以正常工作。
该类的版本不会告诉您该类使用哪个JDK更新,并且该信息也应该无关。
, 使用JDK 1.5和JDK 1.5.0_06编译一个类(任何类)。然后将使用1.5编译的主版本和次要版本与使用1.5.0_06编译的版本进行比较。如果它们相同,则可以在使用Java 1.5.0_06的服务器上运行用1.5编译的类。否则你不能。
,
1.版本中的最后一个数字也有区别吗?
不,不应该。但是,由于较小的版本差异,我在运行时遇到了问题。在进一步调查中,发现这是由于对API的不完全了解。开发人员期望“ 1”以声明的顺序返回字段,并且它在一个版本中以这种方式工作。在较新的更新中,它以不同的顺序返回字段。 API明确指出\“返回的数组中的元素未排序,并且没有任何特定顺序。\”
故事的寓意:始终在完全相同的Java版本上进行开发,测试和部署。
2. javap -verbose ClassName给出了次要和主要版本,但如何
知道该类是哪个更新
用...编译
你不能。类文件甚至不包含该信息。请参阅类文件格式:http://en.wikipedia.org/wiki/Java_class_file
您遇到的问题看起来很奇怪。如果有解决方案,请发表您的解决方案。