eclipse 插件开发 获取项目jar包里面class信息

private void processRootDirectoryJar() throws JavaModelException,CoreException {
	IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
	System.out.println("root" + root.getLocation().toOSString());
 
	IProject[] projects = root.getProjects();
 
	// process each project
	for (IProject project : projects) {
 
		System.out.println("project name: " + project.getName());
 
		if (project.isNatureEnabled("org.eclipse.jdt.core.javanature")) {
			IJavaProject javaProject = JavaCore.create(project);
			IPackageFragment[] packages = javaProject.getPackageFragments();
 
			// process each package
			for (IPackageFragment aPackage : packages) {
 
				// We will only look at the package from the source folder
				// K_BINARY would include also included JARS, e.g. rt.jar
				// only process the JAR files
				if (aPackage.getKind() == IPackageFragmentRoot.K_BINARY
						&& aPackage.getElementName().equals("java.lang")) {
 
					System.out.println("inside of java.lang package");
 
					for (IClassFile classFile : aPackage.getClassFiles()) {
 
						System.out.println("----classFile: "
								+ classFile.getElementName());
 
						// A class file has a single child of type IType.
						// Class file elements need to be opened before they
						// can be navigated. If a class file cannot be
						// parsed, its structure remains unknown.
						// Use IJavaElement.isStructureKnown to determine
						// whether this is the case.
 
						// System.out.println();
						// classFile.open(null);
 
						for (IJavaElement javaElement : classFile
								.getChildren()) {
 
							if (javaElement instanceof IType) {
								System.out.println("--------IType "
										+ javaElement.getElementName());
 
								// IInitializer
								IInitializer[] inits = ((IType) javaElement)
										.getInitializers();
								for (IInitializer init : inits) {
									System.out
											.println("----------------initializer: "
													+ init.getElementName());
								}
 
								// IField
								IField[] fields = ((IType) javaElement)
										.getFields();
								for (IField field : fields) {
									System.out
											.println("----------------field: "
													+ field.getElementName());
								}
 
								// IMethod
								IMethod[] methods = ((IType) javaElement)
										.getMethods();
								for (IMethod method : methods) {
									System.out
											.println("----------------method: "
													+ method.getElementName());
									System.out
											.println("----------------method return type - "
													+ method.getReturnType());
								}
							}
						}
					}
 
				}
			}
 
		}
 
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值