Index: picocontainer/src/java/org/picocontainer/defaults/ConstructorInjectionComponentAdapter.java
===================================================================
RCS file: /home/projects/picocontainer/scm/java/picocontainer/src/java/org/picocontainer/defaults/ConstructorInjectionComponentAdapter.java,v
retrieving revision 1.13
diff -u -r1.13 ConstructorInjectionComponentAdapter.java
--- picocontainer/src/java/org/picocontainer/defaults/ConstructorInjectionComponentAdapter.java	30 May 2004 00:20:01 -0000	1.13
+++ picocontainer/src/java/org/picocontainer/defaults/ConstructorInjectionComponentAdapter.java	19 Aug 2004 13:28:46 -0000
@@ -18,6 +18,7 @@
 import java.lang.reflect.Array;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Modifier;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -148,7 +149,7 @@
                     // TODO - will it ever get here?, is the if() bogus?
                 }
             }
-            if (nonMatching.size() > 0) {
+            if (nonMatching.size() > 0 && parameters != null) {
                 throw new PicoInitializationException("The specified parameters do not match any of the following constructors: " + nonMatching.toString() + " for '" + getComponentImplementation() + "'");
             } else {
                 throw new PicoInitializationException("There are no public constructors for '" + getComponentImplementation() + "'");
@@ -231,7 +232,9 @@
         for (int i = 0; i < allConstructors.length; i++) {
             Constructor constructor = allConstructors[i];
             if (parameters == null || constructor.getParameterTypes().length == parameters.length) {
-                matchingConstructors.add(constructor);
+                if (Modifier.isPublic(constructor.getModifiers()) || allowNonPublicClasses) {
+                    matchingConstructors.add(constructor);
+                }
             }
         }
         // optimize list of constructors moving the longest at the beginning
Index: picocontainer/src/java/org/picocontainer/defaults/InstantiatingComponentAdapter.java
===================================================================
RCS file: /home/projects/picocontainer/scm/java/picocontainer/src/java/org/picocontainer/defaults/InstantiatingComponentAdapter.java,v
retrieving revision 1.20
diff -u -r1.20 InstantiatingComponentAdapter.java
--- picocontainer/src/java/org/picocontainer/defaults/InstantiatingComponentAdapter.java	30 May 2004 00:20:01 -0000	1.20
+++ picocontainer/src/java/org/picocontainer/defaults/InstantiatingComponentAdapter.java	19 Aug 2004 13:28:47 -0000
@@ -34,7 +34,7 @@
 public abstract class InstantiatingComponentAdapter extends AbstractComponentAdapter {
     private transient boolean verifying;
     protected Parameter[] parameters;
-    private final boolean allowNonPublicClasses;
+    protected final boolean allowNonPublicClasses;
 
     protected InstantiatingComponentAdapter(Object componentKey, Class componentImplementation, Parameter[] parameters, boolean allowNonPublicClasses) {
         super(componentKey, componentImplementation);
Index: picocontainer/src/test/org/picocontainer/defaults/ConstructorInjectionComponentAdapterTestCase.java
===================================================================
RCS file: /home/projects/picocontainer/scm/java/picocontainer/src/test/org/picocontainer/defaults/ConstructorInjectionComponentAdapterTestCase.java,v
retrieving revision 1.5
diff -u -r1.5 ConstructorInjectionComponentAdapterTestCase.java
--- picocontainer/src/test/org/picocontainer/defaults/ConstructorInjectionComponentAdapterTestCase.java	30 May 2004 00:20:01 -0000	1.5
+++ picocontainer/src/test/org/picocontainer/defaults/ConstructorInjectionComponentAdapterTestCase.java	19 Aug 2004 13:28:47 -0000
@@ -161,14 +161,14 @@
         }
     }
 
-    public void testIllegalAccessExceptionThrownInCtorIsRethrownInsideInvocationTargetExeption() {
+    public void testClassWithNoPublicCtorInstantiation() {
         DefaultPicoContainer picoContainer = new DefaultPicoContainer();
         try {
             picoContainer.registerComponentImplementation(IllegalAccessExceptionThrowing.class);
             picoContainer.getComponentInstance(IllegalAccessExceptionThrowing.class);
             fail();
         } catch (PicoInitializationException e) {
-            assertTrue(e.getCause().getMessage().indexOf(IllegalAccessExceptionThrowing.class.getName()) > 0);
+            assertTrue(e.getMessage().indexOf(IllegalAccessExceptionThrowing.class.getName()) > 0);
         }
     }
 
