Java 使用Eclipse抽象语法树时出错

Java 使用Eclipse抽象语法树时出错,java,eclipse-jdt,Java,Eclipse Jdt,我试图在非插件环境中使用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) 以下是我正在运行

我试图在非插件环境中使用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();
}
}
有人知道为什么会这样吗

提前感谢,


Shirley

启动应用程序时,
IResource
类不在类路径上

如果您没有使用Eclipse(或其他工具)来管理依赖关系,那么您必须跟踪抽象语法树类需要的每个jar文件,并手动将它们包含在类路径中。我不确定这可能有多少个插件,但Eclipse是由许多插件组成的,手动计算构建依赖项将是一件烦琐的事情


编辑:要将iResort添加到类路径,您要查找的特定jar文件将被称为类似
org.eclipse.core.resources\u 3.5.0.v20090512.jar的文件,具体取决于您的eclipse版本。但我不认为它是您唯一需要的…

我最近遇到了类似的问题,我慢慢地一次修复一个依赖项,下面是我提出的所需依赖项列表。我希望这能为尝试完成同样任务的人节省一些时间:

列表(与下图匹配):

  • ContentType(org.eclipse.core.ContentType)
  • 作业(org.eclipse.core.Jobs)
  • 资源(org.eclipse.core.Resources)
  • 运行时(org.eclipse.core.Runtime)
  • Equinox Common(org.eclipse.Equinox.Common)
  • Equinox首选项(org.eclipse.Equinox.Preferences)
  • JDT(org.eclipse.JDT)
  • jdtcore(org.eclipse.JDT.Core)
  • OSGI(org.eclipse.OSGI)
  • OSGI服务(org.eclipse.OSGI.Services)
  • osgiutil(org.eclipse.OSGI.Util)
所有这些JAR都可能已经包含在Eclipse插件目录中,您可以通过将它们作为外部JAR添加来找到它们并将它们添加到构建路径中


我也有同样的问题。我解决了将JAR添加到plugin.xml所需的依赖项中的问题。您可以在plugin.xml文件的依赖项选项卡中找到它。

是的,我通过将jdt包附带的几乎所有org.eclipse.*.jar文件添加到我的类路径中,解决了这个问题。我没有时间跟踪依赖项,因此这是最快的修复方法。谢谢你的帮助!也许你可以接受答案,结束这个问题?谢谢