diff --git a/tests/org.eclipse.jst.jsp.core.tests/src/org/eclipse/jst/jsp/core/tests/taglibindex/BundleResourceUtil.java b/tests/org.eclipse.jst.jsp.core.tests/src/org/eclipse/jst/jsp/core/tests/taglibindex/BundleResourceUtil.java
index 27e2622..a510144 100644
--- a/tests/org.eclipse.jst.jsp.core.tests/src/org/eclipse/jst/jsp/core/tests/taglibindex/BundleResourceUtil.java
+++ b/tests/org.eclipse.jst.jsp.core.tests/src/org/eclipse/jst/jsp/core/tests/taglibindex/BundleResourceUtil.java
@@ -19,6 +19,7 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Enumeration;
+import java.util.Iterator;
 import java.util.List;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipInputStream;
@@ -266,4 +267,26 @@
 			e.printStackTrace();
 		}
 	}
+	
+	public static IProject createJavaWebProject(String name) throws CoreException {
+		// Create new project
+		IProject project = BundleResourceUtil.createSimpleProject(name, null, new String[]{JavaCore.NATURE_ID, "org.eclipse.pde.PluginNature"});
+
+		project.getFolder("META-INF").create(true, true, null);
+		project.getFolder("META-INF").getFile("MANIFEST.MF").create(new ByteArrayInputStream(("Manifest-Version: 1.0\nBundle-ManifestVersion: 2\nBundle-SymbolicName: "+name+"; singleton:=true\nRequire-Bundle: javax.servlet;bundle-version=\"3.0\",\n javax.servlet.jsp;bundle-version=\"2.2\"\nBundle-ActivationPolicy: lazy\n").getBytes()), true, null);
+
+		IJavaProject javaProject = JavaCore.create(project);
+		List buildPath = new ArrayList(Arrays.asList(javaProject.getRawClasspath()));
+		Iterator i = buildPath.iterator();
+		while (i.hasNext()) {
+			IClasspathEntry entry = (IClasspathEntry) i.next();
+			if (entry.getEntryKind() == IClasspathEntry.CPE_CONTAINER && "org.eclipse.jdt.launching.JRE_CONTAINER".equals(entry.getPath().segment(0))) {
+				i.remove();
+			}
+		}
+		buildPath.add(JavaCore.newContainerEntry(new Path("org.eclipse.pde.core.requiredPlugins")));
+		buildPath.add(JavaCore.newContainerEntry(new Path("org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6")));
+		javaProject.setRawClasspath((IClasspathEntry[]) buildPath.toArray(new IClasspathEntry[buildPath.size()]), new Path("/" + name + "/WebContent/WEB-INF/classes"), new NullProgressMonitor());
+		return project;
+	}
 }
diff --git a/tests/org.eclipse.jst.jsp.core.tests/src/org/eclipse/jst/jsp/core/tests/translation/JSPJavaTranslatorCoreTest.java b/tests/org.eclipse.jst.jsp.core.tests/src/org/eclipse/jst/jsp/core/tests/translation/JSPJavaTranslatorCoreTest.java
index 33d077d..21677e8 100644
--- a/tests/org.eclipse.jst.jsp.core.tests/src/org/eclipse/jst/jsp/core/tests/translation/JSPJavaTranslatorCoreTest.java
+++ b/tests/org.eclipse.jst.jsp.core.tests/src/org/eclipse/jst/jsp/core/tests/translation/JSPJavaTranslatorCoreTest.java
@@ -35,7 +35,6 @@
 import org.eclipse.core.runtime.OperationCanceledException;
 import org.eclipse.core.runtime.Platform;
 import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jdt.core.JavaCore;
 import org.eclipse.jdt.core.compiler.IProblem;
 import org.eclipse.jst.jsp.core.internal.JSPCorePlugin;
 import org.eclipse.jst.jsp.core.internal.java.IJSPProblem;
@@ -132,7 +131,7 @@
 	public void test_126377() throws Exception {
 		String projectName = "bug_126377";
 		// Create new project
-		IProject project = BundleResourceUtil.createSimpleProject(projectName, null, null);
+		IProject project = BundleResourceUtil.createJavaWebProject(projectName);
 		assertTrue(project.exists());
 		BundleResourceUtil.copyBundleEntriesIntoWorkspace("/testfiles/" + projectName, "/" + projectName);
 		IFile file = project.getFile("WebContent/test126377_noerror.jsp");
@@ -144,7 +143,11 @@
 		helper.setURI(file.getFullPath().toOSString());
 		validator.validate(helper, reporter);
 		
-		assertTrue("found jsp java error within html comments when there are none", reporter.getMessages().isEmpty());
+		String strings = "";
+		for (int i = 0; i < reporter.getMessages().size(); i++) {
+			strings = strings + ((IMessage) reporter.getMessages().get(i)).getText() + "\n";
+		}
+		assertTrue("found problems within html comments when there should be none: "+ strings, reporter.getMessages().isEmpty());
 		
 		file = project.getFile("WebContent/test126377_error.jsp");
 		assertTrue(file.exists());
@@ -377,7 +380,7 @@
 	public void test_150794() throws Exception {
 		String testName = "bug_150794";
 		// Create new project
-		IProject project = BundleResourceUtil.createSimpleProject(testName, null, null);
+		IProject project = BundleResourceUtil.createJavaWebProject(testName);
 		assertTrue(project.exists());
 		BundleResourceUtil.copyBundleEntriesIntoWorkspace("/testfiles/" + testName, "/" + testName);
 		
@@ -390,7 +393,11 @@
 		helper.setURI(main.getFullPath().toOSString());
 		validator.validate(helper, reporter);
 
-		assertTrue("Unexpected problems found", reporter.getMessages().size() == 0);
+		String strings = "";
+		for (int i = 0; i < reporter.getMessages().size(); i++) {
+			strings = strings + ((IMessage) reporter.getMessages().get(i)).getText() + "\n";
+		}
+		assertTrue("Unexpected problems found: " + strings, reporter.getMessages().isEmpty());
 
 		// clean up if we got to the end
 		try {
@@ -711,7 +718,7 @@
 	}
 
 	public void test_389174() throws CoreException, IOException {
-		IProject j = BundleResourceUtil.createSimpleProject(getName(), null, new String[]{JavaCore.NATURE_ID});
+		IProject j = BundleResourceUtil.createJavaWebProject(getName());
 		assertTrue(j.exists());
 
 		String typeName = "List<List<Boolean>>";
@@ -728,7 +735,7 @@
 			assertTrue("specified type did not survive translation", translator.getTranslation().indexOf(typeName) >= 0);
 			IJSPProblem[] translationProblems = (IJSPProblem[]) translator.getTranslationProblems().toArray(new IJSPProblem[0]);
 			for (int i = 0; i < translationProblems.length; i++) {
-				assertTrue(translationProblems[i].getID() != IProblem.UndefinedType);
+				assertEquals("expected IJSPProblem type: " + translationProblems[i].getMessage(), Integer.toHexString(IProblem.UndefinedType), Integer.toHexString(translationProblems[i].getID()));
 			}
 		}
 		finally {
diff --git a/tests/org.eclipse.jst.jsp.core.tests/src/org/eclipse/jst/jsp/core/tests/translation/JSPJavaTranslatorCustomTagTest.java b/tests/org.eclipse.jst.jsp.core.tests/src/org/eclipse/jst/jsp/core/tests/translation/JSPJavaTranslatorCustomTagTest.java
index d317ee4..fff9041 100644
--- a/tests/org.eclipse.jst.jsp.core.tests/src/org/eclipse/jst/jsp/core/tests/translation/JSPJavaTranslatorCustomTagTest.java
+++ b/tests/org.eclipse.jst.jsp.core.tests/src/org/eclipse/jst/jsp/core/tests/translation/JSPJavaTranslatorCustomTagTest.java
@@ -20,6 +20,7 @@
 import org.eclipse.jst.jsp.core.tests.taglibindex.BundleResourceUtil;
 import org.eclipse.jst.jsp.core.tests.validation.ReporterForTest;
 import org.eclipse.jst.jsp.core.tests.validation.ValidationContextForTest;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
 import org.eclipse.wst.validation.internal.provisional.core.IReporter;
 
 public class JSPJavaTranslatorCustomTagTest extends TestCase {
@@ -59,20 +60,23 @@
 	public void test_310085() throws Exception {
 		String projectName = "bug_310085"; //$NON-NLS-1$
 		// Create new project
-		IProject project = BundleResourceUtil.createSimpleProject(projectName, null, null);
+		IProject project = BundleResourceUtil.createJavaWebProject(projectName);
 		assertTrue(project.exists());
 		BundleResourceUtil.copyBundleEntriesIntoWorkspace("/testfiles/" + projectName, "/" + projectName);//$NON-NLS-1$ //$NON-NLS-2$
 		IFile file = project.getFile("WebContent/test310085.jsp");//$NON-NLS-1$
 		assertTrue(file.exists());
-				
+
 		JSPValidator validator = new JSPJavaValidator();
 		IReporter reporter = new ReporterForTest();
 		ValidationContextForTest helper = new ValidationContextForTest();
 		helper.setURI(file.getFullPath().toString());
 		validator.validate(helper, reporter);
 		
-		assertTrue("Found JSP Java problem for custom tag "+reporter.getMessages().size(), reporter.getMessages().isEmpty());//$NON-NLS-1$
-		
+		String strings = "";
+		for (int i = 0; i < reporter.getMessages().size(); i++) {
+			strings = strings + ((IMessage) reporter.getMessages().get(i)).getText() + "\n";
+		}
+		assertTrue("Found JSP Java problem(s) for custom tag: " + strings, reporter.getMessages().isEmpty());
 	}
 
 	/**
@@ -84,19 +88,22 @@
 	public void test_326193() throws Exception {
 		String projectName = "bug_326193"; //$NON-NLS-1$
 		// Create new project
-		IProject project = BundleResourceUtil.createSimpleProject(projectName, null, null);
+		IProject project = BundleResourceUtil.createJavaWebProject(projectName);
 		assertTrue(project.exists());
 		BundleResourceUtil.copyBundleEntriesIntoWorkspace("/testfiles/" + projectName, "/" + projectName); //$NON-NLS-1$ //$NON-NLS-2$
 		IFile file = project.getFile("WebContent/test326193.jsp"); //$NON-NLS-1$
 		assertTrue(file.exists());
-		
+
 		JSPValidator validator = new JSPJavaValidator();
 		IReporter reporter = new ReporterForTest();
 		ValidationContextForTest helper = new ValidationContextForTest();
 		helper.setURI(file.getFullPath().toOSString());
-		validator.validate(helper, reporter);
-		
-		assertTrue("found jsp java error for empty end tag in xml comment in script", reporter.getMessages().isEmpty());//$NON-NLS-1$
-			 		
-	 	}
+		validator.validate(helper, reporter);		
+
+		String strings = "";
+		for (int i = 0; i < reporter.getMessages().size(); i++) {
+			strings = strings + ((IMessage) reporter.getMessages().get(i)).getText() + "\n";
+		}
+		assertTrue("found jsp java error for empty end tag in xml comment in script:" + strings, reporter.getMessages().isEmpty());
 	}
+}
diff --git a/tests/org.eclipse.jst.jsp.core.tests/src/org/eclipse/jst/jsp/core/tests/validation/JSPDirectiveValidatorTest.java b/tests/org.eclipse.jst.jsp.core.tests/src/org/eclipse/jst/jsp/core/tests/validation/JSPDirectiveValidatorTest.java
index 6caba40..ac7d918 100644
--- a/tests/org.eclipse.jst.jsp.core.tests/src/org/eclipse/jst/jsp/core/tests/validation/JSPDirectiveValidatorTest.java
+++ b/tests/org.eclipse.jst.jsp.core.tests/src/org/eclipse/jst/jsp/core/tests/validation/JSPDirectiveValidatorTest.java
@@ -192,7 +192,7 @@
 		IPath path = new Path (filePath);
 		IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(path.segment(0));
 		if (!project.exists()) {
-			BundleResourceUtil.createSimpleProject(path.segment(0), null, new String[]{JavaCore.NATURE_ID});
+			BundleResourceUtil.createJavaWebProject(path.segment(0));
 		}
 		IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
 		file.create(new ByteArrayInputStream(content.getBytes("utf8")), true, null);
diff --git a/tests/org.eclipse.jst.jsp.core.tests/testCreateTranslationAdapter.obj b/tests/org.eclipse.jst.jsp.core.tests/testCreateTranslationAdapter.obj
new file mode 100644
index 0000000..69f6f2c
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.core.tests/testCreateTranslationAdapter.obj
Binary files differ
diff --git a/tests/org.eclipse.jst.jsp.core.tests/testTranslationTextComparison.obj b/tests/org.eclipse.jst.jsp.core.tests/testTranslationTextComparison.obj
new file mode 100644
index 0000000..69f6f2c
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.core.tests/testTranslationTextComparison.obj
Binary files differ
diff --git a/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug_109721/.classpath b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug_109721/.classpath
index 4600e2b..2194587 100644
--- a/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug_109721/.classpath
+++ b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug_109721/.classpath
@@ -1,5 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
 	<classpathentry kind="lib" path="WebContent/WEB-INF/lib/struts.jar"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk1.5.0_08"/>
+	<classpathentry kind="output" path="WebContent/WEB-INF/classes"/>
 </classpath>
diff --git a/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug_109721/.project b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug_109721/.project
index 770dfe4..ff981fd 100644
--- a/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug_109721/.project
+++ b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug_109721/.project
@@ -11,20 +11,14 @@
 			</arguments>
 		</buildCommand>
 		<buildCommand>
-			<name>org.eclipse.wst.common.project.facet.core.builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
 			<name>org.eclipse.wst.validation.validationbuilder</name>
 			<arguments>
 			</arguments>
 		</buildCommand>
 	</buildSpec>
 	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
 		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
 		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
-		<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
 	</natures>
 </projectDescription>
diff --git a/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug_109721/META-INF/MANIFEST.MF b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug_109721/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..3858ea8
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug_109721/META-INF/MANIFEST.MF
@@ -0,0 +1,6 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-SymbolicName: unloadable; singleton:=true
+Require-Bundle: javax.servlet;bundle-version="3.0",
+ javax.servlet.jsp;bundle-version="2.2"
+Bundle-ActivationPolicy: lazy
diff --git a/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug_126377/.classpath b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug_126377/.classpath
deleted file mode 100644
index 5ec3b3b..0000000
--- a/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug_126377/.classpath
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="output" path="WebContent/WEB-INF/classes"/>
-</classpath>
diff --git a/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug_126377/.project b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug_126377/.project
deleted file mode 100644
index a375624..0000000
--- a/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug_126377/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>bug_107338</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug_126377/WebContent/META-INF/MANIFEST.MF b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug_126377/WebContent/META-INF/MANIFEST.MF
deleted file mode 100644
index 254272e..0000000
--- a/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug_126377/WebContent/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,3 +0,0 @@
-Manifest-Version: 1.0
-Class-Path: 
-
diff --git a/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug_150794/.classpath b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug_150794/.classpath
deleted file mode 100644
index 5ec3b3b..0000000
--- a/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug_150794/.classpath
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="output" path="WebContent/WEB-INF/classes"/>
-</classpath>
diff --git a/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug_150794/.project b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug_150794/.project
deleted file mode 100644
index e3720e7..0000000
--- a/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug_150794/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>bug_87351</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug_310085/.classpath b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug_310085/.classpath
deleted file mode 100644
index 5ec3b3b..0000000
--- a/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug_310085/.classpath
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="output" path="WebContent/WEB-INF/classes"/>
-</classpath>
diff --git a/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug_310085/.project b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug_310085/.project
deleted file mode 100644
index a375624..0000000
--- a/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug_310085/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>bug_107338</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug_326193/.classpath b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug_326193/.classpath
deleted file mode 100644
index 5ec3b3b..0000000
--- a/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug_326193/.classpath
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="output" path="WebContent/WEB-INF/classes"/>
-</classpath>
diff --git a/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug_326193/.project b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug_326193/.project
deleted file mode 100644
index a375624..0000000
--- a/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug_326193/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>bug_107338</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
