diff --git a/src/common/org/apache/xmlbeans/impl/common/ResolverUtil.java b/src/common/org/apache/xmlbeans/impl/common/ResolverUtil.java
index 626e48b..97f684b 100644
--- a/src/common/org/apache/xmlbeans/impl/common/ResolverUtil.java
+++ b/src/common/org/apache/xmlbeans/impl/common/ResolverUtil.java
@@ -58,14 +58,14 @@
         try
         {
             Class cmClass = Class.forName("org.apache.xml.resolver.CatalogManager");
-            Constructor cstrCm = cmClass.getConstructor(new Class[] {});
-            Object cmObj = cstrCm.newInstance(new Object[] {});
-            Method cmMethod = cmClass.getMethod("setCatalogFiles", new Class[] {String.class});
-            cmMethod.invoke(cmObj, new String[] {catalogFile});
+            Constructor cstrCm = cmClass.getConstructor();
+            Object cmObj = cstrCm.newInstance();
+            Method cmMethod = cmClass.getMethod("setCatalogFiles", String.class);
+            cmMethod.invoke(cmObj, catalogFile);
 
             Class crClass = Class.forName("org.apache.xml.resolver.tools.CatalogResolver");
-            Constructor cstrCr = crClass.getConstructor(new Class[] {cmClass});
-            Object crObj = cstrCr.newInstance(new Object[] {cmObj});
+            Constructor cstrCr = crClass.getConstructor(cmClass);
+            Object crObj = cstrCr.newInstance(cmObj);
 
             return (EntityResolver)crObj;
         }
diff --git a/src/xmlpublic/org/apache/xmlbeans/XmlBeans.java b/src/xmlpublic/org/apache/xmlbeans/XmlBeans.java
index a878381..4d271bf 100644
--- a/src/xmlpublic/org/apache/xmlbeans/XmlBeans.java
+++ b/src/xmlpublic/org/apache/xmlbeans/XmlBeans.java
@@ -41,8 +41,7 @@
     static
     {
         Package pkg = XmlBeans.class.getPackage();
-        if (pkg != null)
-        {
+        if (pkg != null && pkg.getImplementationVersion() != null) {
             XMLBEANS_TITLE = pkg.getImplementationTitle();
             XMLBEANS_VERSION = pkg.getImplementationVersion();
             XMLBEANS_VENDOR = pkg.getImplementationVendor();
@@ -324,7 +323,7 @@
     {
         try
         {
-            return (SchemaTypeLoader)_getContextTypeLoaderMethod.invoke(null, null);
+            return (SchemaTypeLoader)_getContextTypeLoaderMethod.invoke(null);
         }
         catch (IllegalAccessException e)
         {
@@ -347,7 +346,7 @@
     {
         try
         {
-            return (SchemaTypeSystem)_getBuiltinSchemaTypeSystemMethod.invoke(null, null);
+            return (SchemaTypeSystem)_getBuiltinSchemaTypeSystemMethod.invoke(null);
         }
         catch (IllegalAccessException e)
         {
@@ -854,7 +853,7 @@
     {
         try
         {
-            return (SchemaType)_getNoTypeMethod.invoke(null, null);
+            return (SchemaType)_getNoTypeMethod.invoke(null);
         }
         catch (IllegalAccessException e)
         {
