5

我正在尝试在非插件环境中使用 AST 解析器。代码编译,但我得到以下运行时错误:

org.eclipse.jdt.core 的 org.eclipse.jdt.core.dom.ASTParser.(ASTParser.java:189) 的线程“main”java.lang.NoClassDefFoundError 中的异常:org/eclipse/core/resources/IResource。 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();
}
}

有谁知道为什么会这样?

提前致谢,

雪莉

4

3 回答 3

4

我最近遇到了一个类似的问题,我慢慢地一次修复一个依赖项,这是我想出的所需依赖项的列表。我希望这可以为尝试执行相同任务的人节省一些时间:

列表(与下图匹配):

  • 内容类型(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)
  • JDT 核心 (org.eclipse.jdt.core)
  • OSGI (org.eclipse.osgi)
  • OSGI 服务 (org.eclipse.osgi.services)
  • OSGI 实用程序 (org.eclipse.osgi.util)

所有这些 JAR 可能已经包含在您的 Eclipse 插件目录中,您可以通过将它们添加为外部 JAR 来找到它们并将它们添加到构建路径中。

在此处输入图像描述

于 2012-02-03T04:13:46.403 回答
3

IResource您启动应用程序时,该类不在您的类路径中。

如果您不使用 Eclipse(或其他一些工具)来管理依赖项,您将不得不跟踪抽象语法树类所需的每个 jar 文件并手动将它们包含在您的类路径中。我不确定这到底有多少,但 Eclipse 由几十个插件组成,手动计算构建依赖项将是一件苦差事。

编辑:要将 IResorce 添加到类路径中,您要查找的特定 jar 文件将被称为类似org.eclipse.core.resources_3.5.0.v20090512.jar,具体取决于您的 Eclipse 版本。但我不认为它会是你唯一需要的...

于 2009-12-14T22:30:15.177 回答
0

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

于 2015-05-20T13:15:46.790 回答