Java:包含源代码的类文件?

时间:2016-07-13 11:32:48

标签: java .class-file

我正在检查类文件格式,因为我想将源代码添加到类文件中(这在早期的Java版本中是可能的),但我发现的只是SourceFile属性和SourceDebug属性。我正在寻找与类文件捆绑在一起的类的完整源代码,以简化后处理管道。

有没有人知道我的记忆是错误的,或者我如何在类文件中捆绑类的完整源代码,以便在我想检查源代码时不必查找java文件?

是否有编译器开关来执行此操作?

Javac有-g选项添加其他调试信息。有人能告诉我它添加的信息是什么?如果没有-g开关,它会生成代码索引和源文件信息。

我遇到的主要问题是生成一个类文件,但只引用了可能更改的源文件。我想简单地捆绑源文件和类文件。

在maven中,我可以简单地将所有源文件复制到目标目录,但可能与Eclipse,IntelliJ和NetBeans IDE(以及其他)不兼容......。

2 个答案:

答案 0 :(得分:0)

我发现一个可能的解决方案是定义一个包含源的新类文件属性(合法)。由于与类文件相比,源代码很大,因此内容可能最佳压缩(比例为1:5到1:10)。

这样,类文件和源代码保持捆绑状态。

JVM规范保证每个JVM / Tool都必须忽略未知属性。

我将投资到javac应用程序的包装器,确保在编译期间不修改源代码(如果是,重做编译过程),并在编译完成后将源代码添加为类文件属性。

由于这与Eclipse的IDE构建周期(很可能是IntelliJ和NetBeans)不兼容,因此它还需要一个特殊的后处理器。

因此,集成还需要替代JavaBuilder。

一旦将源代码附加到有问题的类文件中,就可以很容易地使用它来执行许多高级操作,这有助于维护和管理代码。对我来说,重要的是源代码和类保持在一起,源信息是100%等于它编译的源代码。

答案 1 :(得分:0)

使用反编译器还将提供一种方法来提取源代码的有用表示,因为大多数反编译器将重视代码信息行,并相应地在源代码中定位反编译结构。

由于某些场景需要访问char级别的char上的注释和正确表示,因此反编译器将是第二速率解决方案。