这已经成为一个问题很长一段时间了,我从来没有找到解决方案,虽然这里的其他问题是相似的,但它们并不完全是我所看到的.
问题是,用于单步执行代码的SOURCE不会刷新每个页面加载.是的,我已经禁用了缓存 - 但问题不在于浏览器缓存,而是DEBUGGER SOURCE缓存.
在我的webapp(Struts2和Tomcat)中,我有一个带标题栏的主页面并离开了菜单.中心内容是加载所有适当的JSP的iframe.我在导航的大部分时间使用一个"动作",不同的结果显示不同的页面.问题是,我导航时,chrome调试器SOURCES窗格中的NAME不会更改.实际页面更改,但由于名称未更改,Chrome不会将新源带入调试器窗口.那么如果我有'调试器',会发生什么?在正在加载的页面的第200行,它停止,并显示"源" - 但它是第200行的OLD源,而不是正在运行的实际源!如果我右键单击SOURCES窗格中的旧源文件,并在"网络面板显示"中显示真实源,因为它实际上是从我的服务器加载的,但是调试源不会更改.
如何解决Chrome中的这个错误并强制源在调试器显示中重新加载?
**更新**不,这与其他问题不一样.David Fahlander的答案似乎符合我所说的.ACTUAL javascript源是刷新的,并在RESOURCES和NETWORK窗格中正确显示.但是在完成实际调试的SOURCE窗格中,新源不会刷新.而且很难调试你看不到的代码!
我使用反射来读取我创建的一些类对象,并使用递归来跟踪整个对象树。
我遇到的问题是,当我有一个“字段”时,我需要知道它是一个简单的属性还是另一个复杂的对象。前者可以立即处理,但后者我需要深入研究并再次调用递归方法。我的代码是这样的:
recurse(Object o) {
Class clazz = o.getClass();
for (Field f : clazz.getDeclaredFields() ) {
fieldClass = f.getType();
// Heres the broken part
if ( !ClassUtils.isPrimitiveOrWrapper(fieldClass) ) {
recurse(f.get(o));
}
else {
// Process simple attribute
}
}
}
Run Code Online (Sandbox Code Playgroud)
我认为这会起作用,但后来我发现 String 不是 'PrimitiveOrWrapper'...然后我发现 Date 也不是...然后我发现 BigDecimal 也不是...
真的没有类或实用程序包可以处理这个请求吗?我只想知道一个类是内部/本机/普通/简单/基本Java类还是我编写的复杂对象。这应该不难。
我相信我的选择是:
请告诉我我在某个地方错过了一个不错的实用程序类/方法。