diff --git a/dev/core/src/com/google/gwt/dev/shell/CompilingClassLoader.java b/dev/core/src/com/google/gwt/dev/shell/CompilingClassLoader.java
index 48a46d5..f2b240f 100644
--- a/dev/core/src/com/google/gwt/dev/shell/CompilingClassLoader.java
+++ b/dev/core/src/com/google/gwt/dev/shell/CompilingClassLoader.java
@@ -146,21 +146,23 @@
          * replacement, instead it would be necessary to significantly alter the
          * semantics of the hand-written JS.
          */
-        if (singleJsoImplTypes.contains(canonicalizeClassName(parsed.className()))) {
+        if (singleJsoImplTypes.contains(canonicalizeClassName(className))) {
           logger.log(TreeLogger.WARN,
               "Invalid JSNI reference to SingleJsoImpl interface ("
-                  + parsed.className() + "); consider using a trampoline. "
-                  + "Expect subsequent failures.", new NoSuchFieldError(
+              + className + "); consider using a trampoline. "
+              + "Expect subsequent failures.", new NoSuchFieldError(
                   jsniMemberRef));
           return -1;
         }
 
         int memberId = dispClassInfo.getMemberId(memberName);
         if (memberId < 0) {
-          logger.log(TreeLogger.WARN, "Member '" + memberName
-              + "' in JSNI reference '" + jsniMemberRef
-              + "' could not be found; expect subsequent failures",
-              new NoSuchFieldError(memberName));
+          if (!className.startsWith("java.")) {
+            logger.log(TreeLogger.WARN, "Member '" + memberName
+                + "' in JSNI reference '" + jsniMemberRef
+                + "' could not be found; expect subsequent failures",
+                new NoSuchFieldError(memberName));
+          }
         }
 
         return synthesizeDispId(dispClassInfo.getClassId(), memberId);
diff --git a/dev/core/src/com/google/gwt/dev/shell/SyntheticClassMember.java b/dev/core/src/com/google/gwt/dev/shell/SyntheticClassMember.java
index 429d11e..a12ae94 100644
--- a/dev/core/src/com/google/gwt/dev/shell/SyntheticClassMember.java
+++ b/dev/core/src/com/google/gwt/dev/shell/SyntheticClassMember.java
@@ -21,7 +21,7 @@
  * This class is used to represent a synthetic field called "class" that allows
  * JSNI references to class literals.
  */
-class SyntheticClassMember implements Member {
+public class SyntheticClassMember implements Member {
   private final Class<?> clazz;
 
   public SyntheticClassMember(Class<?> clazz) {
diff --git a/dev/oophm/overlay/com/google/gwt/dev/util/Jsni.java b/dev/oophm/overlay/com/google/gwt/dev/util/Jsni.java
index ad3e933..2df7d42 100644
--- a/dev/oophm/overlay/com/google/gwt/dev/util/Jsni.java
+++ b/dev/oophm/overlay/com/google/gwt/dev/util/Jsni.java
@@ -28,6 +28,7 @@
 import com.google.gwt.dev.js.ast.JsProgram;
 import com.google.gwt.dev.shell.DispatchIdOracle;
 import com.google.gwt.dev.shell.JavaScriptHost;
+import com.google.gwt.dev.shell.SyntheticClassMember;
 
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Field;
@@ -112,7 +113,8 @@
           member = dispatchInfo.getClassInfoByDispId(dispId).getMember(dispId);
         }
 
-        if (member == null || member instanceof Field) {
+        if (member == null || member instanceof Field
+            || member instanceof SyntheticClassMember) {
           if (q != null) {
             accept(q);
             out.print("[");
