0

我已经用 java 1.5 版编译了一个类。

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

如果我使用 java 版本 1.5.0_06 编译它,如果服务器具有版本 1.5.0_06 的 java,那会有所不同

1.版本中的最后一个数字也有区别吗?

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

谢谢,桑迪普

4

3 回答 3

1

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

所以不,没有区别,为 Java 1.5 编译的类在该版本上应该可以正常工作。

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

于 2011-06-14T09:38:19.533 回答
0

1.版本中的最后一个数字也有区别吗?

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

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

你不能。类文件甚至不携带该信息。查看类文件格式:http ://en.wikipedia.org/wiki/Java_class_file

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

于 2011-06-14T12:35:47.190 回答
0

使用 JDK 1.5 和 JDK 1.5.0_06 编译一个类(任何类)。然后比较用 1.5 编译的那个的主/次版本和用 1.5.0_06 编译的那个。如果它们相同,您应该可以在使用 Java 1.5.0_06 的服务器上运行用 1.5 编译的类。否则你不能。

于 2011-06-14T10:23:11.293 回答