我得到了一些未使用 debug 标志编译的java .jar 。我想通过IDE在远程调试中使用它们,所以我反编译它们并作为源添加到项目中。有时制动点工作错误或根本不工作。
问题是,调试未使用-g
标志编译的 .jar 文件的最佳方法是什么。
答案 0 :(得分:2)
如果是Maven依赖项,则可能是-debug
工件单独分发。例如,此HSQL依赖项同时具有
hsqldb-2.5.0.jar
hsqldb-2.5.0-debug.jar
不幸的是,我没有找到一种更好的方法来强制IDE(Intellij IDEA)下载和使用此工件,因此我手动下载了它并替换为〜/ .m2 / repository :< / p>
wget https://repo1.maven.org/maven2/org/hsqldb/hsqldb/2.5.0/hsqldb-2.5.0-debug.jar -O ~/.m2/repository/org/hsqldb/hsqldb/2.5.0/hsqldb-2.5.0.jar
更多信息:
答案 1 :(得分:0)
如果您远程调试已经发生更改且未将更改部署到远程设备的代码,也会发生这种情况。简而言之,jar中的命令与源代码中的行号不一致。
比我更聪明的人可能会有一个棘手的答案,但对我来说,阻力最小的路径是从jar文件中反编译并重新编译代码并调试它。
99.99%的时间我对jar的实际更改不感兴趣,因为我只是想知道为什么我的代码不起作用。一旦我超越了这个障碍,我就会将原来的罐子放回原位并确保我的代码仍然有效。这个a)(有助于确保)我没有违反许可证,并且b)不会使项目依赖于我的代码 - 因为反编译/重新编译可能会以微妙的方式改变行为。
请注意,某些jar文件具有许可证,只需反编译源并查看它就是违反许可证的行为。虽然我通常不太担心,因为我无意永久使用反编译和重新编译的代码,我只需要“看”它一段时间。 :)