2013-12-11 32 views
0

我正在开发一个插件来实现具有自定义特性和构建器的自定义项目类型。在一个新的向导,我执行下面的代码来创建项目:在Eclipse插件的自定义项目中添加一个特性失败

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 

所有这些代码部分工作,因为这个项目实际上是创建但在它没有项目文件。我看不到任何错误。

我做错了什么,我该如何调试问题?

感谢您的帮助。 Thierry

回答

1

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

desc.setLocationURI(projectLocation); 

呼叫

desc.setLocation(null); 

如果不是默认的描述中的位置应该只设置。

相关问题