私はプラグインのためにプログラムでEclipseプロジェクトを作成しようとしています。プラグインでプラグインのjava eclipseプロジェクトのJREをプログラムで設定する
IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot();
IProject project = workspaceRoot.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 binFolder = project.getFolder("bin");
binFolder.create(false, true, null);
javaProject.setOutputLocation(binFolder.getFullPath(), null);
List<IClasspathEntry> entries = new ArrayList<IClasspathEntry>();
IVMInstall vmInstall = JavaRuntime.getDefaultVMInstall();
LibraryLocation[] locations = JavaRuntime.getLibraryLocations(vmInstall);
for (LibraryLocation element : locations) {
entries.add(JavaCore.newLibraryEntry(element.getSystemLibraryPath(), null, null));
}
javaProject.setRawClasspath(entries.toArray(new IClasspathEntry[entries.size()]), null);
IFolder sourceFolder = project.getFolder("src");
sourceFolder.create(false, true, null);
IPackageFragmentRoot packageRoot = 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(packageRoot.getPath());
javaProject.setRawClasspath(newEntries, null);
しかし、Eclipseアプリケーションで実行されるため、JREシステムライブラリは設定されません。
したがって、EclipseアプリケーションのプロジェクトにJREをプログラムで追加するにはどうすればよいですか?
残念ながらこれは、クラスキャスト例外を与える: とjava.lang.ClassCastException:org.eclipse.wst.jsdt.internal.core.ClasspathEntryはorg.eclipse.jdt.coreにキャストすることはできませんが。 IClasspathEntry – Peter
'org.eclipse.jdt.launching.JavaRuntime'のメソッド定義は' public static org.eclipse.jdt.core.IClasspathEntry getDefaultJREContainerEntry() 'です: – shyam