Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Eclipse 如何从独立Java文件模拟完全兼容的ICompilationUnit?_Eclipse_Eclipse Plugin_Eclipse Jdt - Fatal编程技术网

Eclipse 如何从独立Java文件模拟完全兼容的ICompilationUnit?

Eclipse 如何从独立Java文件模拟完全兼容的ICompilationUnit?,eclipse,eclipse-plugin,eclipse-jdt,Eclipse,Eclipse Plugin,Eclipse Jdt,我正在破解一个Eclipse插件,它可以完美地为Java项目中的Java文件工作。我想让它适用于任何类型的项目中的Java文件 该插件将每个Java文件处理为一个ICompilationUnit。然而,在我的方法中,我只能得到文件的一个实例 根据另一篇文章的建议,我正在从任何Java文件手动创建一个IJavaElement: IJavaElement element = JavaCore.create(file); 除了一些特殊情况外,这似乎效果不错。例如,当我试图获取文件的源代码时,我得到异

我正在破解一个Eclipse插件,它可以完美地为Java项目中的Java文件工作。我想让它适用于任何类型的项目中的Java文件

该插件将每个Java文件处理为一个
ICompilationUnit
。然而,在我的方法中,我只能得到
文件的一个实例

根据另一篇文章的建议,我正在从任何Java文件手动创建一个
IJavaElement

IJavaElement element = JavaCore.create(file);
除了一些特殊情况外,这似乎效果不错。例如,当我试图获取文件的源代码时,我得到异常
JavaModelException

ICompilationUnit compUnit = (ICompilationUnit)element;
compUnit.getSource();
异常消息:

Java Model Exception: Java Model Status [test does not exist]
at org.eclipse.jdt.internal.core.JavaElement.newJavaModelException(JavaElement.java:566)
at org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:247)
at org.eclipse.jdt.internal.core.Openable.openAncestors(Openable.java:505)
at org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:241)
at org.eclipse.jdt.internal.core.Openable.openAncestors(Openable.java:505)
at org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:241)
at org.eclipse.jdt.internal.core.Openable.openAncestors(Openable.java:505)
at org.eclipse.jdt.internal.core.CompilationUnit.openAncestors(CompilationUnit.java:1176)
at org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:241)
at org.eclipse.jdt.internal.core.JavaElement.openWhenClosed(JavaElement.java:579)
at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:316)
at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:302)
at org.eclipse.jdt.internal.core.Openable.getBuffer(Openable.java:285)
at org.eclipse.jdt.internal.core.CompilationUnit.getSource(CompilationUnit.java:903)
at org.autorefactor.refactoring.rules.RefactoringContext.getSource(RefactoringContext.java:126)
... 19 more
恐怕其他方法也会如此。我怎样才能拥有一个完全工作的
ICompilationUnit
/
IJavaElement


编辑:我认为如果源文件在编辑器中打开,我不会得到这个异常。但是,如何避免它?

JavaModelException说了什么?
Java模型异常:Java模型状态[测试不存在]
我刚刚用异常@greg-449的更详细输出更新了我的问题,该异常似乎在说一些不存在的东西。从这个角度看,你是在重构过程中做这件事的——你确定文件、文件夹和项目在你做这件事的时候确实存在吗(什么是“测试”),老实说,我不知道从哪里得到了“测试”。无论如何,我希望java文件能够在不需要项目作为上下文的情况下进行重构。重构本身似乎并不需要整个项目。除此之外,像
org.eclipse.jdt.internal.core.Openable.open祖先
这样的方法似乎在试图找到树根,并导致这些奇怪的失败:(JavaModelException怎么说?
Java模型异常:Java模型状态[测试不存在]
我刚刚更新了一个更详细的异常输出@greg-449,该异常似乎表示某个东西不存在。从这一点上看,您在重构期间正在这样做-您确定在您执行此操作时文件、文件夹和项目确实存在吗(什么是“测试”?)老实说,我不知道从哪里得到“测试”。无论如何,我希望java文件在不需要项目作为上下文的情况下进行重构。重构本身似乎不需要整个项目。此外,像
org.eclipse.jdt.internal.core.Openable.open祖先
这样的方法似乎正在试图升级到树上ot给我带来了这些奇怪的失败:(