`
dada_fangfang
  • 浏览: 146211 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

eclipse jdt organize imports 实现

阅读更多
大致说下这个功能的思路:
1:用字符串构建java文件
2:在内存中构建ijavaelement对象,并对这个对象进行重组(用到了jdt的OrganizeImportsOperation)
3:IFile写入文件

String path = "";//文件绝对路径
IJavaProject project = null;
IPath genSourceFolderPath = new Path(filePath);
for (IProject p : ResourcesPlugin.getWorkspace().getRoot().getProjects()) {
if (p.isOpen()) {
// 查找工程的实际路径是否在源代码生成路径上,如果是,则就是该工程
if (p.getLocation().isPrefixOf(genSourceFolderPath)) {
project = JavaCore.create(p);
}
}
}
if (project == null) {
throw new AresCompilerException("无法生成源码文件:" + path);
}
IPath javaFilePath = new Path(path).makeRelativeTo(project.getProject().getLocation());
IFile javaFile = project.getProject().getFile(javaFilePath);
IJavaElement element = JavaCore.create(javaFile);

String lineDelimiter = StubUtility.getLineDelimiterUsed(null);
formattedSource = CodeFormatterUtil.format(CodeFormatter.K_COMPILATION_UNIT, source.toString(), 0,
lineDelimiter, (IJavaProject) null);


ASTParser parser = ASTParser.newParser(AST.JLS3);
try {
element = ((ICompilationUnit) element).getWorkingCopy(null);
((ICompilationUnit) element).getBuffer().setContents(formattedSource);
} catch (JavaModelException e) {
e.printStackTrace();
}
parser.setSource((ICompilationUnit)element);

final CompilationUnit node = (CompilationUnit) parser.createAST(new NullProgressMonitor());
OrganizeImportsOperation operation = new OrganizeImportsOperation((ICompilationUnit)element, node, true, false, false, new IChooseImportQuery() {
public TypeNameMatch[] chooseImports(TypeNameMatch[][] openChoices, ISourceRange[] ranges) {
return new TypeNameMatch[0];
}
});

InputStream inputStream = null;

try {
TextEdit textEdit = operation.createTextEdit(null);
JavaModelUtil.applyEdit((ICompilationUnit) element, textEdit, false, new NullProgressMonitor());
formattedSource = ((ICompilationUnit) element).getBuffer().getContents();
inputStream = new ByteArrayInputStream(formattedSource.getBytes(javaFile.getCharset()));
if (!javaFile.exists()) {
ResourcesUtil.safelyCreateFile(javaFile, inputStream, false, new NullProgressMonitor());
}else {
javaFile.setContents(inputStream, IFile.FORCE, new NullProgressMonitor());
}
} catch (Exception e) {
e.printStackTrace();
} finally{
IOUtils.closeQuietly(inputStream);
}
分享到:
评论

相关推荐

    Drools报错:The Eclipse JDT Core jar is not in the classpath

    1. **确保Eclipse JDT Core库在类路径中**:你需要将eclipse-jdt-core.jar添加到项目的类路径中,这可以通过修改项目构建配置(如Maven或Gradle的pom.xml或build.gradle文件)来实现。 2. **使用Maven或Gradle管理...

    eclipse JDT的使用

    Eclipse JDT(Java Development Tools)是Eclipse IDE的核心组件之一,专为Java开发者提供了一系列强大的工具和服务。它使得在Eclipse中编写、调试、测试和优化Java代码变得极其便捷。下面将详细介绍Eclipse JDT的...

    eclipse.jdt.core, jdt/核心项目库( eclipse jdt core ).zip

    eclipse.jdt.core, jdt/核心项目库( eclipse jdt core ) JDT内核这是 Eclipse 开发工具的Java的核心部分。 它包含对编译和使用Java代码的非用户界面支持,包括:可以独立运行或者作为 Eclipse IDE的一部分的增量或者...

    基于Eclipse-JDT生成Java源代码的AST并可视化.zip

    Eclipse JDT(Java Development Tools)是Eclipse IDE的一个重要组成部分,提供了丰富的API用于Java源代码的处理,包括生成和操作AST。本教程将介绍如何利用Eclipse JDT生成Java源代码的AST,并通过可视化工具进行...

    Eclipse JDT AST使用方法(word)

    总结来说,Eclipse JDT的AST提供了强大的源代码解析能力,通过节点定位、源代码搜索和遍历来实现代码分析和操作。开发者可以利用这些工具实现诸如代码重构、自动补全、错误检测等功能,极大地提高了Java开发的效率和...

    eclipse中jdt相关jar包

    Class not found: org.eclipse.jdt.core.JDTCompilerAdapter。 解决方法: 拷贝下面这些jar包到ant_home/lib org.eclipse.jdt.compiler.tool_1.0.100.v_972_R35x.jar org.eclipse.jdt.core_3.5.2.v_981_R35x.jar org...

    eclipse.jdt

    【eclipse.jdt】是Eclipse集成开发环境(IDE)中的一个重要组成部分,全称为Eclipse Java Development Tools。它是专门用于Java编程的插件,提供了强大的Java语言支持,使得开发者可以在Eclipse环境中高效地进行Java...

    eclipse-JDT-3.3.1.zip

    Eclipse JDT(Java Development Tools)是Eclipse IDE的核心组件...而“eclipse-JDT-3.3.1.zip”则是这一功能集合的一个具体实现,适用于Eclipse 3.3 Europa版本,适用于那些需要在该环境中开发和维护Java项目的用户。

    Eclipse jdt 2.0 plugin developer guide

    根据给定的文件信息,我们可以总结出以下关于Eclipse JDT 2.0插件开发者指南的相关知识点: ### 一、概述 Eclipse JDT(Java Development Tools)2.0 插件开发者指南是一份由OTI(Open Tooling Initiative)编写的...

    eclipse.jdt.doc.user.3.1.pdf.zip

    在3.1版本中,JDT可能已经实现了更多增强和改进,如性能优化、新API的添加以及对Java语言新特性的支持,比如当时Java SE 5.0或6.0的新特性。 用户文档"org.eclipse.jdt.doc.user.I20050627-1435.pdf"详细阐述了如何...

    org.eclipse.jdt

    org.eclipse.jdt.* 的目录和文件 全部拷贝到 flexbuilder 的plugin (若为myEclipse则是将myEclipse下eclipse\plugins) flashbuilder也一样 ----下面是在FlexBuilder中配置VSS ------- 1. 首先绑定项目到...

    homebrew-jdt-language-server:Eclipse JDT语言服务器的Homebrew公式

    `homebrew-jdt-language-server` 是一个 Homebrew 公式,它使得用户可以通过 Homebrew 在 macOS 上安装 Eclipse JDT 实现的语言服务器。这个服务器遵循 LSP,能够为支持 LSP 的编辑器或IDE(如 VSCode、IntelliJ ...

    org.eclipse.jdt.core_3.2.0.v_671

    这个“org.eclipse.jdt.core_3.2.0.v_671.jar”文件是Eclipse JDT核心功能的实现,包含了所有上述服务的实现和库,是Eclipse IDE中进行Java开发不可或缺的部分。用户可以通过导入这个JAR文件到自己的Eclipse环境中,...

    org.eclipse.jdt.core_3.6.1.v_A68_R36x_jar

    1.下载Eclipse plugin 补丁文件 org.eclipse.jdt.core_3.6.1.v_A68_R36x.jar: http://meiyoudao.download.csdn.net/ 2.将解压缩后的jar包 放到Eclipse的目录中的Plugin下面, 3.Android开发时代码提示卡死的问题...

    org.eclipse.jdt.core_3.6.0.v_A58.jar

    而"org.eclipse.jdt.core"是JDT的内核,是整个插件的基础,它实现了对Java项目的构建、编译、错误检测、代码导航等核心功能。 二、org.eclipse.jdt.core_3.6.0.v_A58.jar详解 该版本号(3.6.0.v_A58)表示的是...

    Eclipse用户开发手册[the user guide of Eclipse JDT from ibm]

    ### Eclipse JDT 用户指南知识点概览 #### 一、引言 本指南旨在为用户提供一个全面的介绍,帮助用户了解如何使用Eclipse JDT(Java Development Tools)进行高效的Java开发。文档由IBM提供,覆盖了从环境搭建到高级...

    eclipse.jdt.core:修改后的Eclipse JDT核心以解析存储库中的Java源代码

    通过"eclipse.jdt.core-master"这个压缩包,我们可以获取到源码,进一步研究和了解这些改进的实现细节,甚至可以根据需要自定义和扩展JDT的功能。对于Java开发者来说,深入理解Eclipse JDT的工作原理和特性,将有助...

    eclipse JDT核心

    - **org.eclipse.jdt.core.jdom**:(自3.0版本后不推荐使用)提供了Java DOM(Document Object Model)的实现,用于表示Java编译单元的结构。 - **org.eclipse.jdt.core.search**:实现了在工作空间中的Java模型...

Global site tag (gtag.js) - Google Analytics