diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index 05577d5dc47d9f657db53534a84544608866f1e2..9843b6cbedd725bfd3748b38b2acb8fec30c79d2 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,3 +1,10 @@
+2005-12-15  Tom Tromey  <tromey@redhat.com>
+	    Andrew Haley  <aph@redhat.com>
+
+	PR java/25429
+	* parse.y (resolve_expression_name): Don't generate accessor
+	methods for constant fields.
+
 2005-12-13  Andrew Haley  <aph@redhat.com>
 
 	PR java/25366
diff --git a/gcc/java/parse.y b/gcc/java/parse.y
index 056feeaa2c66c46eabee6d2d97c31de5a1fd5c23..a467ff15a79fe63b12cce66a662cd20302743fd8 100644
--- a/gcc/java/parse.y
+++ b/gcc/java/parse.y
@@ -9584,8 +9584,15 @@ resolve_expression_name (tree id, tree *orig)
 
 	      /* If we're processing an inner class and we're trying
 		 to access a field belonging to an outer class, build
-		 the access to the field.  */
-	      if (nested_member_access_p (current_class, decl))
+		 the access to the field.
+		 As usual, we have to treat initialized static final
+		 variables as a special case.  */
+              if (nested_member_access_p (current_class, decl)
+                  && ! (JDECL_P (decl) && CLASS_FINAL_VARIABLE_P (decl)
+                        && DECL_INITIAL (decl) != NULL_TREE
+			&& (JSTRING_TYPE_P (TREE_TYPE (decl))
+			    || JNUMERIC_TYPE_P (TREE_TYPE (decl)))
+			&& TREE_CONSTANT (DECL_INITIAL (decl))))
 		{
 		  if (!fs && CLASS_STATIC (TYPE_NAME (current_class)))
 		    {
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index 0c00f2e46d9c8b01e8d7de255693cd91007305c0..b3a03b720d356e5742b087459bcea21eaa20385d 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,8 @@
+2005-12-15  Tom Tromey  <tromey@redhat.com>
+
+	* testsuite/libjava.compile/rh175833.java: New file.
+	* testsuite/libjava.compile/pr25429.java: New file.
+
 2005-12-15  Alan Modra  <amodra@bigpond.net.au>
 
 	* testsuite/lib/libjava.exp: Revert 2005-12-01.
diff --git a/libjava/testsuite/libjava.compile/pr25429.java b/libjava/testsuite/libjava.compile/pr25429.java
new file mode 100644
index 0000000000000000000000000000000000000000..a869b585c4beb39db512f78f60f295c586854847
--- /dev/null
+++ b/libjava/testsuite/libjava.compile/pr25429.java
@@ -0,0 +1,13 @@
+public class pr25429
+{
+  private static final int CONST  = 0;
+  class I {
+    public void f () {
+      switch(0) {
+      case CONST:
+      }
+    }
+  }
+
+  public static void main(String[] args) { }
+}
diff --git a/libjava/testsuite/libjava.compile/rh175833.java b/libjava/testsuite/libjava.compile/rh175833.java
new file mode 100644
index 0000000000000000000000000000000000000000..6bdec57cb6e782ee41ee75f831dcaf1732fa9f89
--- /dev/null
+++ b/libjava/testsuite/libjava.compile/rh175833.java
@@ -0,0 +1,13 @@
+// Follow-on to PR 25429
+public class rh175833
+{
+  private static final Object CONST  = new Object();
+    class I {
+        public Object f () {
+	  // We need an accessor here.
+	  return CONST;
+        }
+    }
+
+  public static void main(String[] args) { }
+}