是否有一种快速的方法(例如工具)可以从源代码(甚至可能从编译的类)检测应用程序的哪些部分调用仅在特定 Java 版本中实现的 Java API 方法?(例如,我的应用程序的哪些部分是特定于 Java6 的)
我不一定要跳过所有ClassMismatchErrors并避免试错法。假设我只想记录应用程序的哪些部分如果是为 Java6 编写的则不能工作,并且我想在版本 5 的 JDK 中运行它。
有这样的事情吗?谷歌这次没有帮助,我也没有在这里找到任何解决方案(确实很少见:)
是否有一种快速的方法(例如工具)可以从源代码(甚至可能从编译的类)检测应用程序的哪些部分调用仅在特定 Java 版本中实现的 Java API 方法?(例如,我的应用程序的哪些部分是特定于 Java6 的)
我不一定要跳过所有ClassMismatchErrors并避免试错法。假设我只想记录应用程序的哪些部分如果是为 Java6 编写的则不能工作,并且我想在版本 5 的 JDK 中运行它。
有这样的事情吗?谷歌这次没有帮助,我也没有在这里找到任何解决方案(确实很少见:)
Animal Sniffer可能对此有所帮助,尤其是它的Maven插件。
如果我理解正确,你所描述的对我来说听起来不是一个好主意。
听起来您想在 JDK 6 上构建一些库(指定 -target 1.5),但让它在 JDK 5 上运行,并且这里和那里只有某些类或方法不起作用(因为他们需要一个仅限 Java6 的 API) . 我不会这样做的。一个应该工作的方法可能仍然会触发一个类被加载,该类本身包含对 Java 6 中新类的一些引用,并且Error
将被抛出。
如果您只选择哪个版本是您的最低支持版本并接受它,那就更好了。