【问题标题】:Which javac compiler settings would you expect as default when using an open source library?使用开源库时,您希望将哪些 javac 编译器设置作为默认设置?
【发布时间】:2011-05-31 06:39:12
【问题描述】:

我最近收到关于我的开源库 jOOQ 的二进制文件未提供调试信息的反馈。那是很好的反馈。我从未注意到这一点,因为我在运行集成测试时从未调试过二进制文件。

这件事让我想到了一个有趣的问题:

在使用开源库时,您会选择/期望哪些 javac 编译器设置和选项作为默认设置?

注意:

  • 我是用ant搭建的,请参考ant javac task API
  • 知道这些选项的工作原理。不用我解释了。我很好奇应该选择哪些
  • 我的用户可以使用源代码,并且可以轻松地重建可交付成果,因此用户可以在需要针对特殊情况进行优化时更改其设置。
  • 编辑:我特别感谢 concrete 参考 concrete 选项的答案。我知道我们期待着出色的工作:-)

【问题讨论】:

  • 调试选项在命令行中是 -g 但在 ant 中类似于 debug="true"。
  • 嗨,彼得。那不是我的问题。我知道如何设置选项,但我很好奇选择哪些
  • 我的印象是 javac 几乎总是在没有特殊选项的情况下运行。
  • @Brendan:查看 ant 任务的文档:ant.apache.org/manual/Tasks/javac.html。默认情况下,不会将调试信息添加到二进制文件中。这样可以节省空间,但会使调试开源库成为一大难题……

标签: java ant build javac


【解决方案1】:

尽可能多地启用调试信息,不要混淆,并有一个与您的二进制文件相对应的源下载。

基本上,您应该为单步执行代码提供最佳条件,以防出现问题。开发人员可能必须识别失败条件以避免触发某些代码或类似情况,在这种情况下,您需要获得所有帮助。

【讨论】:

    【解决方案2】:

    好吧,如果您的库的某个用户遇到问题,您更喜欢带有行号的堆栈跟踪的错误报告还是不带行号?我知道我更喜欢哪一个。

    我使用了很多 java 库,主要是开源的,但也有一些是封闭的。唯一不包含调试信息的库是通过混淆器运行的封闭源代码库。

    【讨论】:

    • 好的,谢谢。我可以看到调试选项非常明显。其他选择呢?
    • 还有哪些选项实际上会影响生成的类?除了目标版本之外,我想不出除调试之外的任何其他相关设置。至于目标版本,1.5 是一个很好的目标,因为它包含一些较新的功能,但涵盖了相当不错的时间范围。提供 1.4 兼容类的库并不多。
    • 我猜你是对的。虽然我可能不自觉地使用了一些 1.6 API,比如 String.isEmpty() 或类似的东西......
    猜你喜欢
    • 1970-01-01
    • 2017-12-01
    • 1970-01-01
    • 2011-10-28
    • 2010-10-05
    • 2019-11-05
    • 2018-05-25
    • 1970-01-01
    相关资源
    最近更新 更多