Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 以编程方式创建源文件夹_Java_Eclipse_Eclipse Plugin - Fatal编程技术网

Java 以编程方式创建源文件夹

Java 以编程方式创建源文件夹,java,eclipse,eclipse-plugin,Java,Eclipse,Eclipse Plugin,我尝试用下面的代码在java项目中创建一个源文件夹 IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); IProject project = root.getProject(projectName); project.create(null); project.open(null); IProjectDescription description = project.getDesc

我尝试用下面的代码在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模型异常:javaProject.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”条目

我已经按照你说的那样试过了,但它只是创建了一个包而不是源文件夹。有什么遗漏吗?你必须更具描述性一点。现在是什么样子?现在代码是什么样子的?