5
我嘗試通過首先通過IProject創建Java項目,然後通過使用IFacetedProject將其轉換爲動態Web項目來創建動態Web項目,但只有靜態項目正在創建......這裏是代碼,已經完成了......請幫助我解決這個問題..提前感謝。Eclipse:以編程方式創建動態Web項目
IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
IProject project = root.getProject("TESTJDT");
try
{
project.create(null);
project.open(null);
IProjectDescription description = project.getDescription();
description.setNatureIds(new String[] { JavaCore.NATURE_ID });
project.setDescription(description, null);
IJavaProject javaProject = JavaCore.create(project);
IClasspathEntry[] buildPath = {
JavaCore.newSourceEntry(project.getFullPath().append("src")),
JavaRuntime.getDefaultJREContainerEntry() };
javaProject.setRawClasspath(buildPath,project.getFullPath().append(
"bin"), null);
IFolder folder = project.getFolder("src");
folder.create(true, true, null);
IPackageFragmentRoot srcFolder = javaProject.getPackageFragmentRoot(folder);
IPackageFragment fragment = srcFolder.createPackageFragment("com.programcreek", true, null);
String str = "package com.programcreek;" + "\n"
+ "public class Test {" + "\n" + " private String name;"+ "\n" + "}";
ICompilationUnit cu = fragment.createCompilationUnit("Test.java", str,false, null);
IType type = cu.getType("Test");
type.createField("private String age;", null, true, null);
IFacetedProject facetedProject =
ProjectFacetsManager.create(project, true, null);
IProjectDescription description1 = project.getDescription();
description1.setNatureIds(new String[]
{"org.eclipse.jem.workbench.JavaEMFNature",
"org.eclipse.jdt.core.javanature",
"org.eclipse.wst.common.project.facet.core.nature",
"org.eclipse.wst.common.modulecore.ModuleCoreNature",
"org.eclipse.wst.jsdt.core.jsNature"});
project.setDescription(description1, null);
IProjectFacet wstWebFacet = ProjectFacetsManager.getProjectFacet
(IModuleConstants.WST_WEB_MODULE);
facetedProject.installProjectFacet
(wstWebFacet.getDefaultVersion(), null, null);
如果這裏的API是限制性的,那麼只是一個破解:您可以查看現有動態Web項目的'.project',並且一旦創建,就用這些行以編程方式手動擴展新項目。工作區將在更新時預測此情況。 – 2013-09-13 08:42:32