diff --git a/org.eclipse.stem.data/org.eclipse.stem.internal.data/src/org/eclipse/stem/internal/data/specifications/IdentfiableSpecificationFactory.java b/org.eclipse.stem.data/org.eclipse.stem.internal.data/src/org/eclipse/stem/internal/data/specifications/IdentfiableSpecificationFactory.java
index c795c2a..02f49cc 100644
--- a/org.eclipse.stem.data/org.eclipse.stem.internal.data/src/org/eclipse/stem/internal/data/specifications/IdentfiableSpecificationFactory.java
+++ b/org.eclipse.stem.data/org.eclipse.stem.internal.data/src/org/eclipse/stem/internal/data/specifications/IdentfiableSpecificationFactory.java
@@ -64,7 +64,7 @@
 					recordClassName = recordClassName.trim();
 					try {
 						retValue = (IdentifiablePropertyFileSpecification) Class
-								.forName(recordClassName).newInstance();
+								.forName(recordClassName).getDeclaredConstructor().newInstance();
 						// Let the GraphRecord figure out what to do with the
 						// rest of the properties.
 						retValue.collectPropertyDataSet(dataSetProperties);
diff --git a/org.eclipse.stem.data/org.eclipse.stem.internal.data/src/org/eclipse/stem/internal/data/specifications/IdentifiablePropertyFileSpecification.java b/org.eclipse.stem.data/org.eclipse.stem.internal.data/src/org/eclipse/stem/internal/data/specifications/IdentifiablePropertyFileSpecification.java
index 75250ad..9c130e6 100644
--- a/org.eclipse.stem.data/org.eclipse.stem.internal.data/src/org/eclipse/stem/internal/data/specifications/IdentifiablePropertyFileSpecification.java
+++ b/org.eclipse.stem.data/org.eclipse.stem.internal.data/src/org/eclipse/stem/internal/data/specifications/IdentifiablePropertyFileSpecification.java
@@ -277,7 +277,7 @@
 					recordClassName = recordClassName.trim();
 					try {
 						retValue = (IdentifiablePropertyFileSpecification) Class
-								.forName(recordClassName).newInstance();
+								.forName(recordClassName).getDeclaredConstructor().newInstance();
 						// Let the IdentifiablePropertyFileSpecification
 						// figure out what to do with the rest of the
 						// properties.
diff --git a/org.eclipse.stem/analysis/org.eclipse.stem.analysis/src/org/eclipse/stem/analysis/provider/ErrorResultItemProvider.java b/org.eclipse.stem/analysis/org.eclipse.stem.analysis/src/org/eclipse/stem/analysis/provider/ErrorResultItemProvider.java
index 5d9ef17..dce227b 100644
--- a/org.eclipse.stem/analysis/org.eclipse.stem.analysis/src/org/eclipse/stem/analysis/provider/ErrorResultItemProvider.java
+++ b/org.eclipse.stem/analysis/org.eclipse.stem.analysis/src/org/eclipse/stem/analysis/provider/ErrorResultItemProvider.java
@@ -205,7 +205,7 @@
 	 */
 	@Override
 	public String getText(Object object) {
-		EList labelValue = ((ErrorResult)object).getErrorByTimeStep();
+		EList<Double> labelValue = ((ErrorResult)object).getErrorByTimeStep();
 		String label = labelValue == null ? null : labelValue.toString();
 		return label == null || label.length() == 0 ?
 			getString("_UI_ErrorResult_type") :
diff --git a/org.eclipse.stem/core/org.eclipse.stem.loggers.imagewriter/src/org/eclipse/stem/loggers/imagewriter/impl/ProjectedMapImageLoggerImpl.java b/org.eclipse.stem/core/org.eclipse.stem.loggers.imagewriter/src/org/eclipse/stem/loggers/imagewriter/impl/ProjectedMapImageLoggerImpl.java
index 1d97b68..723f17f 100644
--- a/org.eclipse.stem/core/org.eclipse.stem.loggers.imagewriter/src/org/eclipse/stem/loggers/imagewriter/impl/ProjectedMapImageLoggerImpl.java
+++ b/org.eclipse.stem/core/org.eclipse.stem.loggers.imagewriter/src/org/eclipse/stem/loggers/imagewriter/impl/ProjectedMapImageLoggerImpl.java
@@ -445,7 +445,7 @@
 	 */
 	public IMapProjection getMapProjector() {
 		try {
-			return getProjection().newInstance();
+			return getProjection().getDeclaredConstructor().newInstance();
 		} catch (Exception e) {
 			
 		}
diff --git a/org.eclipse.stem/core/org.eclipse.stem.ui.ge/src/org/eclipse/stem/ui/ge/kml/StemKml.java b/org.eclipse.stem/core/org.eclipse.stem.ui.ge/src/org/eclipse/stem/ui/ge/kml/StemKml.java
index 688a37a..8c5ea98 100644
--- a/org.eclipse.stem/core/org.eclipse.stem.ui.ge/src/org/eclipse/stem/ui/ge/kml/StemKml.java
+++ b/org.eclipse.stem/core/org.eclipse.stem.ui.ge/src/org/eclipse/stem/ui/ge/kml/StemKml.java
@@ -144,7 +144,7 @@
        try {
 		   String kmlDisplayClass = Aspect.getKmlDisplayClass();
 
-		   display = (IKmlDisplay)Class.forName(kmlDisplayClass).newInstance();
+		   display = (IKmlDisplay)Class.forName(kmlDisplayClass).getDeclaredConstructor().newInstance();
 	   } catch (Throwable t) {		
 		   GELog.error("Failed to create instance for KmlDisplay", t);
 	   }
diff --git a/org.eclipse.stem/core/org.eclipse.stem.ui/src/org/eclipse/stem/ui/Activator.java b/org.eclipse.stem/core/org.eclipse.stem.ui/src/org/eclipse/stem/ui/Activator.java
index 807a464..5c46cbe 100644
--- a/org.eclipse.stem/core/org.eclipse.stem.ui/src/org/eclipse/stem/ui/Activator.java
+++ b/org.eclipse.stem/core/org.eclipse.stem.ui/src/org/eclipse/stem/ui/Activator.java
@@ -108,7 +108,7 @@
 			String provider = element.getAttribute("provider");
 			//Use the bundle's class loader to load the classes
 			Class<?> factoryClass = bundle.loadClass(factory);
-			Object factoryInstance = factoryClass.newInstance();
+			Object factoryInstance = factoryClass.getDeclaredConstructor().newInstance();
 			Class<?> providerClass = bundle.loadClass(provider);
 			//Register the specific factory in the general factory
 			ColorProviderAdapterFactory.INSTANCE.addAdapterFactory(
diff --git a/org.eclipse.stem/distributed/org.eclipse.stem.graphsynchronizer/src/org/eclipse/stem/graphsynchronizer/Activator.java b/org.eclipse.stem/distributed/org.eclipse.stem.graphsynchronizer/src/org/eclipse/stem/graphsynchronizer/Activator.java
index 3c39186..99e844d 100644
--- a/org.eclipse.stem/distributed/org.eclipse.stem.graphsynchronizer/src/org/eclipse/stem/graphsynchronizer/Activator.java
+++ b/org.eclipse.stem/distributed/org.eclipse.stem.graphsynchronizer/src/org/eclipse/stem/graphsynchronizer/Activator.java
@@ -115,7 +115,7 @@
 		Messenger messenger = null;
 		try {
 		 Class<?> messC = Class.forName(messengerClass);
-		 messenger = (Messenger)messC.newInstance();
+		 messenger = (Messenger)messC.getDeclaredConstructor().newInstance();
 		} catch(Exception cnfe) {
 			Activator.logError("Unable to load or instantiate class "+messengerClass, cnfe);
 			return;
