簡體   English   中英

以編程方式創建源文件夾

[英]Create Source Folder Programmatically

我嘗試使用以下代碼在java項目中創建一個源文件夾

    IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
    IProject project = root.getProject(projectName);
    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); 
    IFolder sourceFolder = project.getFolder("src");
    sourceFolder.create(false, true, null);
    IPackageFragmentRoot root = javaProject.getPackageFragmentRoot(sourceFolder);
    IClasspathEntry[] oldEntries = javaProject.getRawClasspath();
    IClasspathEntry[] newEntries = new IClasspathEntry[oldEntries.length + 1];
    System.arraycopy(oldEntries, 0, newEntries, 0, oldEntries.length);
    newEntries[oldEntries.length] = JavaCore.newSourceEntry(root.getPath());
    javaProject.setRawClasspath(newEntries, null);

但它從最后一行給出Java Model ExceptionjavaProject.setRawClasspath(newEntries,null);

Java Model Exception: Java Model Status [Cannot nest 'ProjectName/src' inside 'ProjectName'. To enable the nesting exclude 'src/' from 'ProjectName']
    at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:784)
    at org.eclipse.jdt.internal.core.JavaProject.setRawClasspath(JavaProject.java:3102)
    at org.eclipse.jdt.internal.core.JavaProject.setRawClasspath(JavaProject.java:3064)
    at org.eclipse.jdt.internal.core.JavaProject.setRawClasspath(JavaProject.java:3117)

任何人都可以告訴我如何以編程方式創建源文件夾?

當您調用javaProject.getPackageFragmentRoot()時,您使用自身作為源文件夾為項目創建了構建路徑。 跳過它,您可以從IFolder實例獲取項目相對路徑,並從中創建newSourceEntry。

我昨天遇到了這個問題。 不幸的是,我無法找到我獲得解決問題所需信息的鏈接,但這是解決方案

項目根“ProjectName”已經在類路徑中,因此不能將其子文件夾添加到類路徑中。 要在類路徑中包含“ProjectName / src”,我只需將“ProjectName”類路徑條目替換為新的“ProjectName / src”條目。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM