我编译了一个java版本为1.5的类。
当我在服务器中部署它时,它给了我错误的版本错误。
如果我使用java版本1.5.0_06进行编译,那么如果服务器的版本为1.5.0_06,则会有所不同
1.版本中的最后一个数字是否也有所不同?
2. javap -verbose ClassName
给了我小版本和主要版本,但是如何知道编译类的更新?
谢谢, 和Sandeep
答案 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
你遇到的问题看起来很奇怪。如果你有解决方案,请发布你的解决方案。