java – 如何在定位较旧的JDK版本时避免使用NoClassDefFoundErrors和NoSuchMethodErrors?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 如何在定位较旧的JDK版本时避免使用NoClassDefFoundErrors和NoSuchMethodErrors?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1056字,纯文字阅读大概需要2分钟。
内容图文
![java – 如何在定位较旧的JDK版本时避免使用NoClassDefFoundErrors和NoSuchMethodErrors?](/upload/InfoBanner/zyjiaocheng/785/5cfabfd927d34d559416e00d9894bc46.jpg)
假设我想编写一个针对某些JRE版本的应用程序(例如1.6),但是在我用来开发它的机器上,安装了更新版本的JRE(例如1.7).
天真的方法是将编译器级别设置为1.6(我使用Eclipse,但这可能不是很重要,因为问题很普遍).但是,这还不够.设置编译器的源级别可确保源文件仅使用该Java版本可用的语言功能,因此生成的类文件具有正确的次要版本,因此目标JVM将能够加载和运行它们.
但是还有另一个更微妙的问题:如果我在1.7中添加的代码中使用类或方法并尝试在安装了1.6运行时的机器上运行应用程序,则会因NoClassDefFoundError或NoSuchMethodError而失败.
问题是相同的程序在dev机器上运行正常,因为安装在它上面的1.7 JDK确实包含这些类.编译器或IDE也不会抱怨.我正在引用不可用的类和方法的唯一指标是JavaDoc中的Since 1.7注释.
那么如何确保我从不使用旧版JRE中不可用的类或方法?唯一可靠的解决方案是始终在构建路径上具有确切的目标JRE版本吗?这意味着我需要在我的开发机器上为每个这样的情况安装一个额外的JDK(1.7,1.6,可能是1.5,甚至可能是1.4).
解决方法:
在编译期间使用指向1.6 JRE(特别是rt.jar)的bootcpasspath选项.这样做会强制检查所有引用的类,方法和属性是否实际存在于提供的rt.jar中.
有关详细信息,请参阅javac – cross-compilation options.
内容总结
以上是互联网集市为您收集整理的java – 如何在定位较旧的JDK版本时避免使用NoClassDefFoundErrors和NoSuchMethodErrors?全部内容,希望文章能够帮你解决java – 如何在定位较旧的JDK版本时避免使用NoClassDefFoundErrors和NoSuchMethodErrors?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。