使用java 1.5和1.5.0_06编译的类之间是否存在差异

时间:2011-06-14 09:35:29

标签: java version javap

我编译了一个java版本为1.5的类。

当我在服务器中部署它时,它给了我错误的版本错误。

如果我使用java版本1.5.0_06进行编译,那么如果服务器的版本为1.5.0_06,则会有所不同

1.版本中的最后一个数字是否也有所不同?

2. javap -verbose ClassName给了我小版本和主要版本,但是如何知道编译类的更新?

谢谢, 和Sandeep

3 个答案:

答案 0 :(得分:1)

JRE / JDK 1.5.0_06是Java 1.5(或Java 5的实现,具体取决于它的星期几)。

所以不,没有区别,为Java 1.5编译的类应该在该版本上运行得很好。

类版本不会告诉您编译该类的JDK的哪个更新,并且该信息也应该不相关。

答案 1 :(得分:0)

使用JDK 1.5和JDK 1.5.0_06编译类(任何类)。然后将用1.5编译的版本的主/次版本与用1.5.0_06编译的版本进行比较。如果它们是相同的,那么在使用Java 1.5.0_06的服务器上运行使用1.5编译的类应该没问题。否则你不能。

答案 2 :(得分:0)

  

1.版本中的最后一个数字是否也有所不同?

没有。它应该不是。但是,由于版本差异较小,我在运行时遇到了问题。经过进一步调查,发现它是由于对API的不完全理解。开发人员期望obj.getClass().getFields()按照声明的顺序返回字段,并且它在一个版本中以这种方式工作。在较新的更新中,它以不同的顺序返回字段。 API清楚地表明“返回的数组中的元素没有排序,也没有任何特定的顺序。”
故事的道德:始终在完全相同的Java版本上开发,测试和部署。

  

2.javap -verbose ClassName为我提供了次要和主要版本,但是如何   知道该课程的更新   编译用??

你做不到。类文件甚至不包含该信息。请参阅类文件格式:http://en.wikipedia.org/wiki/Java_class_file

你遇到的问题看起来很奇怪。如果你有解决方案,请发布你的解决方案。