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