我正在使用java.security包来验证一些数字签名。基本上我正在调用Signature类的verify方法。我想了解验证方法的内部逻辑。因此,我从rt.jar中提取了Signature.class,对其进行了反编译,然后将其放入我的eclipse项目中的正确的包结构中。但是,它没有编译和抱怨“无法解决”错误。我正在通过反编译其他内置的java类来逐个修复它们,但这似乎是无穷无尽的。这是调试内置java api的正确方法还是有其他推荐方法?
答案 0 :(得分:1)
您可以在Eclipse中附加JDK源:JDK安装中应该有一个src.jar。这样您就可以方便地浏览和调试它们。不包括一些javax和com.sun类,但它是一个开始。
重新编译和替换JDK类非常困难。
答案 1 :(得分:1)
您看到了the java.security.debug flag吗?
...如果您希望监控安全访问,可以设置java.security.debug系统属性。要查看所有调试选项的列表,请使用帮助设置,所有设置允许您查看所有内容:
java -Djava.security.debug=help foo
all turn on all debugging
access print all checkPermission results
jar jar verification
policy loading and granting
scl permissions SecureClassLoader assigns
The following can be used with access:
stack include stack trace
domain dumps all domains in context
failure before throwing exception, dump stack
and domain that didn't have permission
答案 2 :(得分:0)
这是调试内置java api的正确方法还是有其他推荐方法?
我使用attach source将API的源代码添加到eclipse中,并使用默认调试器来调试应用程序