我有一个包含Scala源代码的JAR文件,但我已经丢失了原始代码。有没有办法将JAR中的类文件转换为Scala函数和类,而不是编译器生成的Java类?
我已经尝试对其进行反编译,但它只给我提供了毫无意义的Java代码。
提前感谢您!
我有一个包含Scala源代码的JAR文件,但我已经丢失了原始代码。有没有办法将JAR中的类文件转换为Scala函数和类,而不是编译器生成的Java类?
我已经尝试对其进行反编译,但它只给我提供了毫无意义的Java代码。
提前感谢您!
你需要一款特定于Scala语言的反编译器。虽然并没有无法编写的理由,但这需要大量的工作量,并且据我所知目前还没有人真正做到了。当然,它不会完全生成原始代码,就像其他语言的反编译器一样。
Main.scala
的文件中:object Main {
def main(args: Array[String]): Unit = {
println("hello, world")
}
}
dotc Main.scala
将产生预期的输出(一个Main
类的.class
文件,一个Main
对象的.class
文件和一个.tasty
文件),可以使用-decompile
选项将其输入(反)编译器中,如下所示:dotc -decompile Main
/** Decompiled from ./Main.tasty */
@scala.annotation.internal.SourceFile("Main.scala") object Main {
def main(args: scala.Array[scala.Predef.String]): scala.Unit = scala.Predef.println("hello, world")
}