在哪里检查包是否随JRE for Java一起提供

时间:2013-12-05 15:54:15

标签: java

我在我的java桌面应用程序中使用javax.xml.soap包,我想检查是否在不同平台上的JRE中可以使用该包(以及更多通常随JDK一起提供的任何包)(win,mac, linux)用于部署。 目的是确保我的应用程序将在具有JRE的目标计算机上运行,​​或检查是否需要完整的JDK。同样对于linux我想确保open-jdk jre 1.6(不是oracle one)就足够了。 感谢

3 个答案:

答案 0 :(得分:1)

如果您不想知道您所拥有的JRE中是否包含课程,请执行以下操作:

  • 找到您的JRE的rt.jar,我的/usr/lib/jvm/jdk1.7.0_07/jre/lib/rt.jar
  • 使用您最喜欢的.zip查看器
  • 打开它
  • 搜索想要的课程
  • 你已经完成了!

如果您不想知道您正在运行的JRE是否包含您的课程,请执行以下操作:

  • 使用您要测试的类的类名称调用Class.forName
  • 将其放入try-catch-block
  • 如果你抓到ClassNotFoundException,那就不在了!
  • 请注意,这不会说明它是否在默认库中,只是在类路径上!

答案 1 :(得分:0)

猜测运行时JVM中是否存在包的方法:

  • 检查JRE版本系统属性(java.version
  • 尝试使用reflection
  • 加载javax.xml.soap中您期望的课程

在实践中,我宁愿要求某些JRE用于在我的系统要求中运行我的应用程序,而不是仅仅尝试检测包是否可用。

答案 2 :(得分:0)

这种便携性的努力非常好! 我建议你需要Java 7,因为OpenJDK7是它的默认实现,所以不再需要“oracle java比openjdk更好”。 我认为要求Java 7比要求特定的Java实现(Oracle)或“检查它是否在openjdk 6上运行”更好。 无论如何我建议大卫的观点!