我正在尝试在非插件环境中使用AST解析器。代码编译,但我得到以下运行时错误:
线程“main”中的异常java.lang.NoClassDefFoundError:org / eclipse / core / resources / IResource 在org.eclipse.jdt.core.dom.ASTParser。(ASTParser.java:189) 在org.eclipse.jdt.core.dom.ASTParser.newParser(ASTParser.java:118)
这是我正在运行的代码:
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jdt.core.dom.*;
public class TestAST
{
private void runTest()
{
String helloStr ="\n"+
"public class HelloWorld {\n"+
"\n"+
" private String name=\"\"\n\n"+
" /**\n"+
" * \n"+
" */\n"+
" public void sayHello() {\n"+
" System.out.println(\"Hello \"+name+\"!\");\n"+
" }\n"+
"\n"+
"}";
ASTParser parser = ASTParser.newParser(AST.JLS3);
parser.setKind(ASTParser.K_COMPILATION_UNIT);
parser.setSource(helloStr.toCharArray());
parser.setResolveBindings(true);
ASTNode tree = parser.createAST(null);
tree.toString();
}
public static void main(String args[])
{
TestAST ast = new TestAST();
ast.runTest();
}
}
有谁知道为什么会这样?
提前致谢,
雪莉
答案 0 :(得分:3)
启动应用程序时,IResource
类不在类路径中。
如果您不使用Eclipse(或其他工具)来管理依赖项,那么您将不得不追踪抽象语法树类所需的每个jar文件,并手动将它们包含在类路径中。我不确定这可能有多少,但是Eclipse由许多插件组成,并且手动设计构建依赖项将是一件苦差事。
编辑:要将IResorce添加到类路径中,您要查找的特定jar文件将被称为org.eclipse.core.resources_3.5.0.v20090512.jar
,具体取决于您的Eclipse版本。但我不认为这将是你唯一需要的......
答案 1 :(得分:3)
我最近遇到了类似的问题,我慢慢地逐步修复了一个依赖项,这里是我想出的必需依赖项列表。我希望为试图完成同样任务的人节省一些时间:
列表(与下图匹配):
所有这些JAR可能已经包含在Eclipse插件目录中,您可以通过将它们添加为外部JAR来查找并将它们添加到构建路径中。
答案 2 :(得分:0)
我遇到了同样的问题。我解决了将jar添加到plugin.xml所需的依赖项中。您可以在plugin.xml文件的“依赖项”选项卡中找到它。