【问题标题】:Runtime error using the Eclipse Abstract Syntax Tree使用 Eclipse 抽象语法树的运行时错误
【发布时间】:2019-01-11 11:10:14
【问题描述】:

我正在尝试在非插件环境中使用 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();
}
}

有人知道为什么会这样吗?

提前致谢,

雪莉

【问题讨论】:

    标签: java eclipse-jdt


    【解决方案1】:

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

    列表(与下图相符):

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 是的,我通过将与 jdt 包捆绑在一起的几乎所有 org.eclipse.*.jar 文件添加到我的类路径中来解决了这个问题。我没有时间追踪依赖关系,所以这是最快的解决方法。感谢您的帮助!
      • 也许你可以接受这个答案,结束这个问题?谢谢。
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多