[英]Setting the JRE of java eclipse project in plugin programmatically
我正在尝试以编程方式为我的插件创建eclipse项目。 我用这段代码来创建项目:
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系统库。
那么如何以编程方式将JRE添加到eclipse应用程序中的项目中呢?
entries.add(JavaRuntime.getDefaultJREContainerEntry());
适合我。
IPath containerPath = new Path(JavaRuntime.JRE_CONTAINER);
IVMInstall vmInstall = JavaRuntime.getDefaultVMInstall();
IPath vmPath = containerPath
.append(vmInstall.getVMInstallType().getId())
.append(vmInstall.getName());
IClasspathEntry jreEntry = JavaCore.newContainerEntry(vmPath);
PreferenceConstants.getDefaultJRELibrary();
Eclipse的默认JRE存储在首选项中,因此上面的调用应该为您提供Java运行时环境库。
从更广泛的来源获得有关以编程方式创建项目的重要信息: http : //www.pushing-pixels.org/2008/11/18/extending-eclipse-creating-a-java-project-without-displaying-a- wizard.html
IClasspathEntry[] jreClasspaths=org.eclipse.jdt.ui.PreferenceConstants.getDefaultJRELibrary();
IClasspathEntry[] oldClasspathEntries=null;
try{
oldClasspathEntries=javaProject.getRawClasspath();
}catch(JavaModelException e){
e.printStackTrace();
}
Set<IClasspathEntry> newClasspathEntries=new HashSet<IClasspathEntry>();
newClasspathEntries.addAll(Arrays.asList(jreClasspaths));
newClasspathEntries.addAll(Arrays.asList(oldClasspathEntries));
try{
javaProject.setRawClasspath(newClasspathEntries.toArray(new IClasspathEntry[newClasspathEntries.size()]), monitor);
}catch(JavaModelException e){
e.printStackTrace();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.