我正在尝试为 Eclipse 插件实现 HyperlinkDetector,回调方法为我提供了一个可以使用的 ITextViewer。
如何获取查看器 IDocument 的项目、IPath 或 IFile?
显然,IDocument 的概念是只允许访问内容,无论来源如何。我能想到的就是检查工作台中的活动编辑器部分......
由于我正在处理的是 Java 代码,因此实际类型是 JavaSourceViewer(如果有帮助的话)。
我对eclipse IDE很陌生.我想为codeigniter PHP框架开发一个IDE.我怎么开始 Eclipse for C++和Eclipse for Jave EE有什么区别?
我怎么开始?任何形式的帮助表示赞赏.谢谢.
在此代码中,prosseek.B #bar()方法调用prosseek.SuperA#foo().
package prosseek;
public class SuperA {
int i = 0;
public void foo()
{
System.out.println(i);
}
}
public class B {
public void bar()
{
SuperA a = new SuperA();
a.foo();
}
}
Run Code Online (Sandbox Code Playgroud)
我需要检测bar()中调用的foo()的类型.我使用ASTVisitor来检测MethodInvocation代码(a.foo()),但我不知道我该怎么办才能从中获取SuperA类型.
ICompilationUnit icu = type.getCompilationUnit();
final ASTParser parser = ASTParser.newParser(AST.JLS3);
parser.setKind(ASTParser.K_COMPILATION_UNIT);
parser.setSource(icu);
parser.setResolveBindings(true); // we need bindings later on
CompilationUnit unit = (CompilationUnit) parser.createAST(null);
unit.accept(new ASTVisitor() {
public boolean visit(MethodInvocation methodInvocation)
{
// ???
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
我从JDT基础知识教程中得到了提示.

我尝试了以下代码:
IBinding binding …Run Code Online (Sandbox Code Playgroud) 我正在使用Spotless和 Gradle。我已将其配置为使用 Eclipse 的 JDT Code Formatter:
spotless {
groovyGradle {
greclipse("4.21.0").configFile("${rootDir}/config/spotless/eclipe_groovy_formatter.xml")
}
java {
eclipse("4.21.0").configFile("${rootDir}/config/spotless/eclipe_jdt_formatter.xml")
endWithNewline()
importOrder("", "javax", "java")
indentWithSpaces(2)
lineEndings(LineEnding.UNIX)
removeUnusedImports()
trimTrailingWhitespace()
}
}
Run Code Online (Sandbox Code Playgroud)
的内容eclipe_jdt_formatter.xml只是:
spotless {
groovyGradle {
greclipse("4.21.0").configFile("${rootDir}/config/spotless/eclipe_groovy_formatter.xml")
}
java {
eclipse("4.21.0").configFile("${rootDir}/config/spotless/eclipe_jdt_formatter.xml")
endWithNewline()
importOrder("", "javax", "java")
indentWithSpaces(2)
lineEndings(LineEnding.UNIX)
removeUnusedImports()
trimTrailingWhitespace()
}
}
Run Code Online (Sandbox Code Playgroud)
问题是我想在 (Eclipse) XML 文件中配置正确的设置,以便将enum每个值放在自己的行上。
例如,这就是当前格式化源代码的方式:
<?xml version="1.0" encoding="UTF-8" ?>
<profiles version="12">
<profile kind="CodeFormatterProfile" name="Fulgore Team" version="12">
<setting id="org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation" value="80" />
<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter" value="false" />
<setting id="org.eclipse.jdt.core.formatter.comment.line_length" …Run Code Online (Sandbox Code Playgroud) 我想编译我唯一更改的java源文件.我知道eclipse正在JDT插件中执行此操作.但我的问题是,是否有可能没有日食安装?
我的意思是可以从eclipse插件中获取一小部分jar,并使用它的编译器通过ant脚本编译只更改的java文件?
谢谢Jijoy
我有一个eclipse插件代码来操作项目/工作区中的类(smcho.Hello).我可以创建一个CompilationUnit并对其进行一些修改,但我需要将结果保存在不同的文件中以检查两个版本之间的差异.
这是我获取CompilationUnit的代码.
IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
IProject project = root.getProject("Hello");
project.open(null);
IJavaProject javaProject = JavaCore.create(project);
IType lwType = javaProject.findType("smcho.Hello");
org.eclipse.jdt.core.ICompilationUnit lwCompilationUnit = lwType.getCompilationUnit();
final ASTParser parser = ASTParser.newParser(AST.JLS3);
parser.setKind(ASTParser.K_COMPILATION_UNIT);
parser.setSource(lwCompilationUnit);
parser.setResolveBindings(true); // we need bindings later on
CompilationUnit unit = (CompilationUnit) parser.createAST(null /* IProgressMonitor */);
// modify the unit AST node
Run Code Online (Sandbox Code Playgroud)
如何将此修改后的单元保存到新文件中?
java eclipse eclipse-plugin abstract-syntax-tree eclipse-jdt
我在Ubuntu 12.10中安装了eclipse.工作了几天后,我创建了我的第一个CDT C++项目,并在那里呆了一段时间.现在,当我回到我的Java项目时,我发现当我输入变量名并按"."时.没有出现.
但是,我可以通过选择"编辑" - >"内容辅助" - >"Java提议"来返回上下文菜单.问题是它根本不方便.单击"默认提案"时,将显示带有"无默认提议"的空上下文菜单.我还确认正在激活正确的"Java"方面.
如何返回原始状态(默认情况下Java提示菜单)?
Eclipse Platform版本为3.7.0.I20120502-2000
我有一个现有的Java应用程序,其中包含我想以编程方式修改的源文件.我需要能够对源文件进行分析,并根据该分析执行源转换.我还需要能够理解不同源文件之间的关系.我还想将此过程创建为独立的Java应用程序.
做了一点研究我发现了以下工具:代码模型和Eclipse JDT.我确定还有其他人.我已经排除了代码模型,因为它(据我所知)只允许生成新代码,不能使用现有代码.
Eclipse JDT库似乎符合我的所有需求.我能够轻松地解析源文件.我可以配置绑定,以便保留跨类型的信息.我现在遇到的问题是让ASTRewrite功能正常工作.看来(从我读过的例子和文档中)它只能在eclipse插件中运行.当我尝试使用重写器时,我收到以下错误:
java.lang.IllegalArgumentException: This API can only be used if the AST is created from a compilation unit or class file
那么我可以在独立应用程序中使用ASTRewrite功能,还是需要开始查看其他工具?
我想用jdt列出java项目中的所有文件,包括jsps,xml文件等.
我尝试了下面的代码,但它只返回java资源(包括类文件,我不需要).
List<String> resourceNames = new ArrayList<String>();
IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects();
for (IProject project : projects) {
if (project.isOpen() && project.isNatureEnabled(JavaCore.NATURE_ID)) {
for (IResource resource : project.members()) {
resourceNames.add(resource.getName() + "-" + resource.getFullPath().toString());
}
}
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以指出我正确的方向.