在Eclipse插件中添加自定义项目的性质失败

时间:2013-12-11 10:42:22

标签: eclipse-plugin

我正在开发一个插件,用自定义的自然和构建器来实现自定义项目类型。在新向导中,我执行以下代码来创建项目:

IProject newProject = ResourcesPlugin.getWorkspace().getRoot()
                                .getProject(projectName);
IProjectDescription desc = newProject.getWorkspace()
                .newProjectDescription(newProject.getName());
desc.setLocationURI(projectLocation);
try {
    newProject.create(desc, null);
    if (!newProject.isOpen()) {
        newProject.open(null);
    }
} catch (CoreException e) { (...) }

现在项目已创建,我尝试使用以下代码添加自然:

if (!project.hasNature(MyNature.NATURE_ID)) {
    IProjectDescription description = project.getDescription();
    String[] prevNatures = description.getNatureIds();
    String[] newNatures = new String[prevNatures.length + 1];
    System.arraycopy(prevNatures, 0, newNatures, 0, prevNatures.length);
    newNatures[prevNatures.length] = MyNature.NATURE_ID;
    description.setNatureIds(newNatures);
    IProgressMonitor monitor = new NullProgressMonitor();
    project.setDescription(description, monitor);
}

以下是我的plugin.xml文件的内容:

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Eclipse
Bundle-SymbolicName: com.myapp.eclipse;singleton:=true
Bundle-Version: 1.0.0.qualifier
Bundle-Activator: com.myapp.eclipse.Activator
Bundle-Vendor: MyApp
Require-Bundle: org.eclipse.ui,
 org.eclipse.core.runtime,
 org.eclipse.core.resources;bundle-version="3.6.1",
 org.eclipse.ui.ide;bundle-version="3.6.2"
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Bundle-ActivationPolicy: lazy
Export-Package: com.myapp.eclipse,
 com.myapp.eclipse.builder,
 com.myapp.eclipse.nature,
 com.myapp.eclipse.saving

所有这些代码部分工作,因为实际创建了项目,但其中没有.project文件。我看不出任何错误。

我做错了什么以及如何调试问题?

感谢您的帮助。 亨利

1 个答案:

答案 0 :(得分:1)

我认为这可能是因为您在项目描述中设置了项目位置。而不是

desc.setLocationURI(projectLocation);

呼叫

desc.setLocation(null);

只有在默认情况下,才应设置说明中的位置。