Я пытаюсь использовать синтаксический анализатор AST в несменной среде. Компиляции кода, но я получаю следующую ошибку периода выполнения:
Исключение в потоке "основной" 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 состоит из множества десятков плагинов, и ручная работа с зависимостями сборки будет сложной задачей.
Изменить: чтобы добавить IResorce в путь к классам, конкретный jar файл, который вы ищете, будет называться примерно так org.eclipse.core.resources_3.5.0.v20090512.jar
, в зависимости от вашей версии Eclipse. Но не думаю, что это единственное, что вам понадобится ...