Bug 77786 - NPE from Java debug hover
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/JavaDebugHover.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/JavaDebugHover.java
index 413a662..a0e23cb 100644
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/JavaDebugHover.java
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/JavaDebugHover.java
@@ -109,7 +109,12 @@
IField field = (IField)javaElement;
String typeSignature = Signature.createTypeSignature(field.getDeclaringType().getFullyQualifiedName(), true);
typeSignature = typeSignature.replace('.', '/');
- IJavaFieldVariable fieldVariable = frame.getThis().getField(field.getElementName(), typeSignature);
+ IJavaFieldVariable fieldVariable = null;
+ if (frame.isStatic()) {
+ fieldVariable = frame.getDeclaringType().getField(field.getElementName());
+ } else {
+ fieldVariable = frame.getThis().getField(field.getElementName(), typeSignature);
+ }
if (fieldVariable != null) {
StringBuffer buf = new StringBuffer();
appendVariable(buf, fieldVariable);
diff --git a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIReferenceType.java b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIReferenceType.java
index e5f0d82..f8a7a74 100644
--- a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIReferenceType.java
+++ b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIReferenceType.java
@@ -76,7 +76,7 @@
try {
ReferenceType type = (ReferenceType)getUnderlyingType();
Field field = type.fieldByName(name);
- if (field != null) {
+ if (field != null && field.isStatic()) {
return new JDIFieldVariable(getDebugTarget(), field, type);
}
} catch (RuntimeException e) {