在JAR文件中包含源代码的缺点是什么?

3
为了在调试代码时提供帮助,我建议我们的JAR文件应该包含源代码。我想知道这可能会引起什么问题。我的第一反应是JAR文件会稍微变大。我可以接受这个。还有其他问题需要考虑吗?
谢谢!

嗯,有整个代码安全性问题,但是随着反编译器的出现,这几乎成为了一个无关紧要的点。 - thatidiotguy
在某些情况下,JAR文件的大小很重要。例如,在没有.java文件的情况下,在服务器上部署会更快。 - sics
4个回答

4
通常情况下,您将已编译的代码和源代码分别放置在两个不同的jar包中。
当您需要调试代码时,可以在IDE中附加源代码jar包。
像Maven这样的构建工具将轻松为您完成此操作。

2

我强烈推荐这种方法。一些开源项目(例如 jMock,Hamcrest,GWT)也采用了这种方法。

这种方法可以避免使用单独的源代码文件。这也意味着,如果将来源项目丢失(在大型组织中有时会发生),后续的维护程序员将有机会重新创建它。

如果您愿意让那些有权访问该jar文件的人可以看到您的源代码,并准备接受jar文件大小增加的惩罚(以及可能忽略不计的创建、传输和部署jar文件所需时间的增加),那么这就是您需要担心的全部问题。据我所知,没有其他问题。

仅仅因为 Maven 标准要求保持源文件分离并不意味着您必须按照这种方式进行。


1

0

Java空间中的一些工具将从类路径(即从jar包内部)获取源文件并执行不良操作。

通常情况下,如果您添加了一个执行此操作的jar包依赖项...那么您最终会发现这些源文件被重新编译到依赖项目中并捆绑在其jar包中,然后所有类加载器都会陷入混乱状态,因为类从一个源加载,另一个源加载。

千万不要这样做。遵循Maven方式(即使不使用Maven),创建单独的-sources.jar


哪些工具可以做到这一点?对我来说,这听起来像是恐吓宣传。 - ᴇʟᴇvᴀтᴇ
中央仓库中有一些特定的构件存在这个问题。大约每年都会有人依赖于错误的版本,然后当他们尝试编译项目时,会出现一堆错误。我正在尝试在谷歌上查找,但“包含源代码的坏JAR”在前几页上没有答案,所以需要搜索M-L档案。这不是FUD,而是一个真正的问题。 - Stephen Connolly

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接