【发布时间】:2018-01-19 06:24:56
【问题描述】:
看看this question。当您打开启用了 scala 插件(Intellij Idea)的.class 文件时,它会显示 scala 代码,但是当它关闭时 java decompile 插件会显示反编译的 java 代码。请注意,即使启用了 scala 插件,javac 编译的 .class 文件也会反编译。这意味着 scala 插件“查看”类文件中的一些标记并拦截显示的文件内容。
它实际使用的标记是什么?有没有办法打开.class 文件并更改编译器(和/或)其他信息集以使这些类看起来像是由javac 编译的?
【问题讨论】:
-
您没有提供太多细节(例如哪个 IDE,例如您如何将依赖项附加到项目,例如 jar 文件是否附加了“源 jar”)。在 Internet 上搜索,它看起来甚至没有 scala 反编译器,因此您的 IDE 中的 Scala 插件很可能知道在源 jar 文件中查找具有 scala 文件扩展名而不是 java 文件扩展名的源文件。
-
查看原始问题。 IDE 是 intellij idea(问题已更新),jar 文件仅包含已编译的
.class文件。 没有任何带有java或scala扩展名的文件。 -
启用 scala 插件后看到的“源”,它是否包含 any cmets?版权免责声明、javadoc、多行 cmets、内联 cmets?如果是这样,它不会被反编译,因为没有反编译器可以做到这一点,因为 cmets 没有存储在 .class 文件中。
标签: java scala javac bytecode-manipulation scalac