diff --git a/src/java/org/apache/commons/jelly/tags/core/ArgTag.java b/src/java/org/apache/commons/jelly/tags/core/ArgTag.java
index 9f078ff..d04dfe4 100644
--- a/src/java/org/apache/commons/jelly/tags/core/ArgTag.java
+++ b/src/java/org/apache/commons/jelly/tags/core/ArgTag.java
@@ -99,7 +99,9 @@
             assertNotNull(value);
         } else if(null != typeString) {
             try {
-              klass = getClassLoader().loadClass(typeString);
+              // klass = getClassLoader().loadClass(typeString);
+              // JELLY-274: rather use the three args static class-load-method
+              klass = Class.forName(typeString, false, getClassLoader());
             } catch (ClassNotFoundException e) {
                 throw new JellyTagException(e);
             }
@@ -113,7 +115,9 @@
             if (klass.equals(Class.class))
             {
                 try {
-                    value = getClassLoader().loadClass((String) value);
+                    //value = getClassLoader().loadClass((String) value);
+                    // JELLY-274: rather use three-args class.forName
+                    value = Class.forName((String) value, false, getClassLoader());
                 } catch (ClassNotFoundException e) {
                     throw new JellyTagException(e);
                 }
diff --git a/src/test/org/apache/commons/jelly/core/TestArgTag.java b/src/test/org/apache/commons/jelly/core/TestArgTag.java
index 0936316..cbc2334 100644
--- a/src/test/org/apache/commons/jelly/core/TestArgTag.java
+++ b/src/test/org/apache/commons/jelly/core/TestArgTag.java
@@ -196,6 +196,24 @@
             assertNull(parentTag.getValue(i));
         }
     }
+    
+   
+    public void testToObjectArray() throws Exception {
+        argTag.setType(Object[].class.getName());
+        argTag.setValue(new Object[] {"testObjectArray"});
+        argTag.doTag(getXMLOutput());
+        assertEquals(Object[].class,parentTag.getType(0));
+        assertEquals("testObjectArray",((Object[]) parentTag.getValue(0))[0]);
+    }
+
+    public void testToObjectArrayClass() throws Exception {
+        argTag.setType(Class.class.getName());
+        argTag.setValue(Object[].class.getName());
+        argTag.doTag(getXMLOutput());
+        assertEquals(Class.class,parentTag.getType(0));
+        assertEquals(Object[].class,parentTag.getValue(0));
+    }
+
 
     private MockArgTagParent parentTag = null;
     private ArgTag argTag = null;
