从Java程序中获取任何类的源代码

Dyi*_*yin 11 java scala jar class

我正在尝试从Java程序中检索任何类(如果可用)的源代码以进行调试.假设我有Class[_]我想要检索源代码的参考.

我到目前为止所做的尝试 - 在Scala中:

val clazz = classOf[ClassDefinedInSeparateFile]

  1. clazz.getProtectionDomain.getCodeSource.getLocation.toString + "/" + clazz.getPackage.getName.replaceAll("\\.","/") + "/" + clazz.getSimpleName + ".scala"- 看起来没问题,JAR在那里并包含.scala文件,但无法打开使用Source.fromFile(...).
  2. "/" + clazz.getPackage.getName.replaceAll("\\.","/") + "/" + clazz.getSimpleName + ".scala" - 看起来不错,但无法打开使用 Source.fromInputStream(...)

备注:

  • 生产或登台环境中没有可用的IDE.
  • 在我们的设置中,JAR包含源代码.java.scala文件,因此不需要反编译器.(至少对于应用程序的源代码,而不是依赖项.如果应用程序源代码可以访问代码段,那就足够了 - 大多数异常都会在应用程序级别捕获并在那里相关.)

谢谢.

Pab*_*ruz 0

如果您想获得与 Java 原始源代码类似的东西,您需要一个 Java 反编译器。

您将无法访问源代码(您的可执行程序由Java 字节码组成,而不是 Java 源代码)。

这是我最喜欢的 Java Decompiler的链接。

  • 我认为大多数 JAR *不*包含源代码。:-) (8认同)