java - Eclipse JDT 类 ASTVisitor 未找到

标签 java eclipse classpath eclipse-jdt

考虑以下代码:

// App.java
import org.eclipse.jdt.core.dom.ASTVisitor;
import org.eclipse.jdt.core.dom.VariableDeclarationFragment;
import org.eclipse.jdt.core.dom.SimpleName;

public class App
{
    public static void main(String[] args)
    {
        ASTVisitor visitor = new ASTVisitor()
            {
                public boolean visit(VariableDeclarationFragment node)
                {
                    return false;
                }
                public boolean visit(SimpleName node)
                {
                    return false;
                }
            };
    }
}

编译成功:

$ javac -cp org.eclipse.jdt.core.jar App.java

org.eclipse.jdt.core.jar是从最新版本的Eclipse复制的。运行该程序时:

$ java App -cp org.eclipse.jdt.core.jar

我收到以下运行时错误:

Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/jdt/core/dom/ASTVisitor
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
...

实际上,这是另一个测试程序的精简版本,其中依赖项是使用 Maven 管理的,并给出了相同的错误。在寻找解决方案时,我发现提示这可能与缺少依赖项或未按正确顺序加载依赖项有关。但是,我不明白这是怎么发生的。检查我得到的用过的 jar :

$ jar tf org.eclipse.jdt.core.jar | grep ASTVisitor
org/eclipse/jdt/core/dom/DefaultASTVisitor.class
org/eclipse/jdt/core/dom/ASTVisitor.class
org/eclipse/jdt/internal/compiler/ASTVisitor.class

所以实际的类确实存在。除此之外,我尝试加载一堆相关的类,如 this link 的建议。 ,然后我再次尝试加载 Eclipse 安装附带的所有 JDT 类,但不幸的是没有结果。

问题可能是什么?我还能采取什么措施来找出问题所在?

非常感谢。

最佳答案

必须在“java”命令上运行的类之前指定“-cp”选项:

java -cp org.eclipse.jdt.core.jar App

您在类名后面放置的任何内容都将作为参数传递给程序。

关于java - Eclipse JDT 类 ASTVisitor 未找到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28370274/

相关文章:

java - Spring Security 应用程序中自定义错误页面未由 Sitemesh 修饰

Java Do While 语句在 Try Catch 语句之后无限循环

java - 为什么 Maven 中需要 Surefire 插件?

java - 在这种情况下,jar 将从哪里加载?

Java 框架演示错误 : Could not find or load main class

java - Android Studio : Error:/android-studio/gradle/gradle-2. 4/lib/plugins/gradle-diagnostics-2.4.jar(没有这样的文件或目录)

java - forge的源文件在哪里?

eclipse - 在检查Eclipse更新期间找不到存储库

java - ActiveMQ 客户端问题 : ClassNotFoundException org. apache.logging.log4j.spi.AbstractLoggerAdapter

java - 如何通过使用父类(super class)来减少代码?