3

以下のコードを使用して、Java プロジェクトに1 つのソース フォルダーを作成しようとしました。

    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 Exceptionが発生しています: 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)

ソースフォルダーをプログラムで作成する方法を教えてもらえますか?

4

2 に答える 2

0

昨日、この問題に遭遇しました。残念ながら、問題を解決するために必要な情報を入手したリンクが見つかりませんが、ここに解決策があります

プロジェクト ルート「ProjectName」は既にクラスパスにあるため、そのサブフォルダーをクラスパスに追加できません。クラスパスに「ProjectName/src」を含めるには、単に「ProjectName」クラスパス エントリを新しい「ProjectName/src」エントリに置き換えます。

于 2015-05-29T06:47:47.690 に答える