我似乎无法在谷歌上找到任何信息,告诉我为什么会这样,以及解决方案是什么。我正在逐步完成第三方代码(我有源代码)并且非常希望看到当前行正在执行...
查看javac编译标志,我看到-g:none标志。如果设置了这个标志,这是否足以解释为什么我无法看到行号?如果是这样,为什么会有人这样做,是否有性能影响?我是否需要自己重新编译jar以附加缺少的调试信息(如果可能)?
谢谢!
答案 0 :(得分:8)
查看javac编译标志,我看到-g:none标志。如果设置了这个标志,这是否足以解释为什么我无法看到行号?
是的,这就是原因。
如果是这样,为什么会有人这样做?
也许图书馆的作者想让他的罐子尽可能小。如果在没有-g:none
开关的情况下编译,性能将没有太大差异。
答案 1 :(得分:1)
我认为会有性能影响,但调试信息肯定会使您的类文件更大。这是另一个动机。
此外,想要保护其来源的公司通常不会编译调试信息,以使反汇编(逆向工程)对于那些如此激励的人而言价值较低(这与一些公司混淆其字节码的原因相同)。
显然,如果您可以获得该来源,则上述观点无关紧要。如果代码是开源的,那么编写自己的库就不会有太多麻烦(毕竟,其他每个贡献者都需要能够做到这一点!)。是的,这是你最好的选择。