簡體   English   中英

使用Eclipse抽象語法樹的運行時錯誤

[英]Runtime error using the Eclipse Abstract Syntax Tree

我正在嘗試在非插件環境中使用AST解析器。 代碼可以編譯,但是出現以下運行時錯誤:

線程“主”中的異常java.lang.NoClassDefFoundError:org.eclipse.jdt.core.dom.ASTParser。(ASTParser.java:189)上的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();
}
}

有人知道為什么會這樣嗎?

提前致謝,

雪莉

啟動應用程序時, IResource類不在您的類路徑中。

如果您不使用Eclipse(或其他工具)來管理依賴關系,則必須跟蹤Abstract Syntax Tree類所需的每個jar文件,並將它們手動包含在類路徑中。 我不確定到底有多少,但是Eclipse是由許多插件組成的,手動計算構建依賴關系會很麻煩。

編輯:要將IResorce添加到類路徑,您要查找的特定jar文件將稱為org.eclipse.core.resources_3.5.0.v20090512.jar之類的文件,具體取決於您的Eclipse版本。 但我認為這不是您唯一需要的一個...

我最近遇到了一個類似的問題,我慢慢地逐步解決了一個依賴項,這是我提出的必需依賴項列表。 我希望這可以為嘗試執行相同任務的人員節省一些時間:

列表(與下面的圖片匹配):

  • ContentType(org.eclipse.core.contenttype)
  • 職位(org.eclipse.core.jobs)
  • 資源(org.eclipse.core.resources)
  • 運行時(org.eclipse.core.runtime)
  • 春分常見(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 Util(org.eclipse.osgi.util)

所有這些JAR可能已經包含在您的Eclipse插件目錄中,您可以通過將它們添加為外部JAR來查找並將它們添加到構建路徑中。

在此處輸入圖片說明

我有同樣的問題。 我解決了將罐子添加到plugin.xml所需的依賴項中的問題。 您可以在plugin.xml文件的Dependencies標簽中找到它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM