【问题标题】:How to decompile a Java program successfully? [closed]如何成功反编译Java程序? [关闭]
【发布时间】:2018-03-25 05:16:58
【问题描述】:

JD-GUI对Java程序的反编译如下。

看起来有些课程错过了。

有没有最好的反编译Java程序不出现红线的方法?

感谢大家的建议,发现构造函数没有完成,修复了。

【问题讨论】:

  • 在这里发布代码图片是不受欢迎的,因为这会使我们更难帮助您解决问题。最好将相关代码和/或错误直接复制并粘贴到您的问题中。请阅读Why not to upload images of code on SO when asking a question?,然后阅读edit您的问题。
  • 红线似乎与Java中的“泛型类”有关? 不是。远比这更根本。我认为你需要做一些rubber duck debugging
  • 看起来 InportTaskWhatEver 构造函数不希望传递 status。不知道也不看这门课,我没有办法帮助更多
  • 你的构造函数只有一个参数,你想用两个来调用它。此外T 的类型与ViewtrackerUpgradeManager 的类型不同。在你的情况下,this.t = t 到目前为止什么也没做。

标签: java decompiler


【解决方案1】:

您的构造函数的定义根本不是您的代码所期望的。 你想这样称呼它

ImportTaskTransactionCallback<Integer> tc = new ImportTaskTransactionCallback(this.viewtrackerUpgradeManager, status);

但是您定义的构造函数与该签名不匹配:

public ImportTaskTransactionCallback(T viewtrackerUpgradeManager)

你可能想这样定义它:

public ImportTaskTransactionCallback(ViewtrackerUpgradeManager viewtrackerUpgradeManager, T t)

【讨论】:

    【解决方案2】:

    第一个错误: 未定义 ImportTaskTransactionCallback 的(适当的)构造函数。在您的文件中,我只能看到“ImportTaskTransactionCallback”类中的 1 个构造函数,并且它只需要 1 个 T 对象。

    第二个错误: 您不能将 T 对象转换为 ViewtrackerUpgradeManager 对象。数据类型不可互换。

    就像 Joe C 所说,您应该将代码放在代码块中。您可以通过将代码缩进 4 个空格轻松做到这一点。这让我们更容易为您提供帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-21
      • 1970-01-01
      • 1970-01-01
      • 2014-08-28
      • 2013-05-31
      • 1970-01-01
      • 2010-09-25
      相关资源
      最近更新 更多