diff --git a/ipojo/core/src/main/java/org/apache/felix/ipojo/util/Property.java b/ipojo/core/src/main/java/org/apache/felix/ipojo/util/Property.java
index 58a4478a..47dca68 100644
--- a/ipojo/core/src/main/java/org/apache/felix/ipojo/util/Property.java
+++ b/ipojo/core/src/main/java/org/apache/felix/ipojo/util/Property.java
@@ -181,33 +181,35 @@
      * @throws ConfigurationException if the class cannot be loaded
      */
     private static Class computeArrayType(String type, BundleContext context) throws ConfigurationException {
+        // Note: Harmony does't support the type[].class notation.
+        // An empty array has to be created to get the class object.
         String internalType = type.substring(0, type.length() - 2);
         if ("string".equals(internalType) || "String".equals(internalType)) {
-            return String[].class;
+            return new String[0].getClass();
         }
         if ("boolean".equals(internalType)) {
-            return boolean[].class;
+            return new boolean[0].getClass();
         }
         if ("byte".equals(internalType)) {
-            return byte[].class;
+            return new byte[0].getClass();
         }
         if ("short".equals(internalType)) {
-            return short[].class;
+            return new short[0].getClass();
         }
         if ("int".equals(internalType)) {
-            return int[].class;
+            return new int[0].getClass();
         }
         if ("long".equals(internalType)) {
-            return long[].class;
+            return new long[0].getClass();
         }
         if ("float".equals(internalType)) {
-            return float[].class;
+            return new float[0].getClass();
         }
         if ("double".equals(internalType)) {
-            return double[].class;
+            return new double[0].getClass();
         }
         if ("char".equals(internalType)) {
-            return char[].class;
+            return new char[0].getClass();
         }
 
         // Complex array type.
diff --git a/ipojo/tests/core/factories/src/main/java/org/apache/felix/ipojo/test/scenarios/factories/FactoryTestSuite.java b/ipojo/tests/core/factories/src/main/java/org/apache/felix/ipojo/test/scenarios/factories/FactoryTestSuite.java
index 121578d..973582c 100644
--- a/ipojo/tests/core/factories/src/main/java/org/apache/felix/ipojo/test/scenarios/factories/FactoryTestSuite.java
+++ b/ipojo/tests/core/factories/src/main/java/org/apache/felix/ipojo/test/scenarios/factories/FactoryTestSuite.java
@@ -32,7 +32,7 @@
         ots.addTestSuite(ConfigAdminTest.class);
         ots.addTestSuite(ObedienceTest.class);
         ots.addTestSuite(FactoryProps.class);
-       // ots.addTestSuite(EmptyArrayTest.class);
+   //     ots.addTestSuite(EmptyArrayTest.class);
         return ots;
     }
 
diff --git a/ipojo/tests/core/factories/src/main/java/org/apache/felix/ipojo/test/scenarios/factories/UnacceptableConfigurationTest.java b/ipojo/tests/core/factories/src/main/java/org/apache/felix/ipojo/test/scenarios/factories/UnacceptableConfigurationTest.java
index e6b4d92..9c7ba67 100644
--- a/ipojo/tests/core/factories/src/main/java/org/apache/felix/ipojo/test/scenarios/factories/UnacceptableConfigurationTest.java
+++ b/ipojo/tests/core/factories/src/main/java/org/apache/felix/ipojo/test/scenarios/factories/UnacceptableConfigurationTest.java
@@ -47,7 +47,10 @@
 		try {
 			ci = f.createComponentInstance(p);
 			ci.dispose();
-		} catch(Exception e) { fail("an acceptable configuration is refused : " + e.getMessage()); }
+		} catch(Exception e) { 
+		    fail("an acceptable configuration is refused : " + e.getMessage());
+		    e.printStackTrace();
+		}
 		
 	}
 	
diff --git a/ipojo/tests/integration-tests/pom.xml b/ipojo/tests/integration-tests/pom.xml
index a1409fd..b68682c 100644
--- a/ipojo/tests/integration-tests/pom.xml
+++ b/ipojo/tests/integration-tests/pom.xml
@@ -219,6 +219,7 @@
 		</dependency>
 
 	<!--  External handlers -->
+	
 		<dependency>
 			<groupId>ipojo.tests</groupId>
 			<artifactId>tests.eventadmin.handler 
@@ -242,7 +243,7 @@
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.configadmin</artifactId>
-			<version>1.0.4</version>
+			<version>1.0.8</version>
 			<scope>test</scope>
 		</dependency>
 		<dependency>
