import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.IImportDeclaration;
import org.eclipse.jdt.core.IJavaElement;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.IPackageFragment;
import org.eclipse.jdt.core.IPackageFragmentRoot;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.core.JavaModelException;
public class ImportPrinter {
public void printProjectImports(String projectName) {
try {
IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
if (project.isNatureEnabled("org.eclipse.jdt.core.javanature")) {
IJavaProject javaProject = JavaCore.create(project);
printImports(javaProject);
}
} catch (CoreException e) {
e.printStackTrace();
}
}
private void printImports(IJavaProject javaProject) throws JavaModelException {
IPackageFragmentRoot[] roots = javaProject.getPackageFragmentRoots();
for (IPackageFragmentRoot root : roots) {
if (root.getKind() == IPackageFragmentRoot.K_SOURCE) {
for (IJavaElement element : root.getChildren()) {
if (element instanceof IPackageFragment) {
IPackageFragment packageFragment = (IPackageFragment) element;
for (ICompilationUnit unit : packageFragment.getCompilationUnits()) {
printUnitImports(unit);
}
}
}
}
}
}
private void printUnitImports(ICompilationUnit unit) throws JavaModelException {
for (IImportDeclaration importDecl : unit.getImports()) {
System.out.println("Import in " + unit.getElementName() + ": " + importDecl.getElementName());
}
}
}
在这段代码中:
- ResourcesPlugin.getWorkspace().getRoot().getProject(projectName) 获取指定名称的项目。
- project.isNatureEnabled("org.eclipse.jdt.core.javanature") 检查项目是否是Java项目。
- javaProject.getPackageFragmentRoots() 获取项目中所有的包根元素。
- root.getKind() == IPackageFragmentRoot.K_SOURCE 确保只处理源代码文件。
- packageFragment.getCompilationUnits() 获取包中的所有编译单元(即Java文件)。
- unit.getImports() 获取每个编译单元中的所有import声明。
这段代码将遍历指定Java工程中的所有源代码文件,并打印出每个文件中的所有import语句。确保在开发Eclipse插件时,你的插件项目已经正确配置了对Eclipse JDT的依赖。