diff --git a/contrib/jss/invoke.lisp b/contrib/jss/invoke.lisp
index f23095d..b462f26 100644
--- a/contrib/jss/invoke.lisp
+++ b/contrib/jss/invoke.lisp
@@ -314,6 +314,20 @@ CLASS-NAME may either be a symbol or a string according to the usual JSS convent
 
 (defvar *running-in-osgi* (ignore-errors (jclass "org.osgi.framework.BundleActivator")))
 
+(define-condition no-such-java-field (error)
+  ((field-name
+    :initarg :field-name
+    :reader field-name
+    )
+   (object
+    :initarg :object
+    :reader object
+    ))
+  (:report (lambda (c stream)
+             (format stream "Unable to find a FIELD named ~a for ~a"
+                     (field-name c) (object c))))
+  )
+
 (defun get-java-field (object field &optional (try-harder *running-in-osgi*))
   "Get the value of the FIELD contained in OBJECT.
 If OBJECT is a symbol it names a dot qualified static FIELD."
@@ -326,8 +340,7 @@ If OBJECT is a symbol it names a dot qualified static FIELD."
              (jfield (if (java-object-p field)
                          field
                          (or (find-declared-field field class)
-                             (error "Unable to find a FIELD named ~a for ~a"
-                                    field object)))))
+                             (error 'no-such-java-field :field-name field :object object)))))
         (#"setAccessible" jfield +true+)
         (values (#"get" jfield object) jfield))
       (if (symbolp object)
@@ -367,7 +380,8 @@ associated is used to look up the static FIELD."
                         (jobject-class object))))
              (jfield (if (java-object-p field)
                          field
-		       (find field (#"getDeclaredFields" class) :key 'jfield-name :test 'equal))))
+                       (or (find-declared-field field class)
+                           (error 'no-such-java-field :field-name field :object object)))))
         (#"setAccessible" jfield +true+)
         (values (#"set" jfield object value) jfield))
     (if (symbolp object)
@@ -377,6 +391,9 @@ associated is used to look up the static FIELD."
             (setf (jfield (jclass-of object) field) value)
             (setf (jfield object field) value)))))
 
+(defun (setf get-java-field) (value object field &optional (try-harder *running-in-osgi*))
+  (set-java-field object field value try-harder))
+
 
 (defconstant +for-name+ 
   (jmethod "java.lang.Class" "forName" "java.lang.String" "boolean" "java.lang.ClassLoader"))
