【问题标题】:How can I solve "java.lang.NoClassDefFoundError"?如何解决“java.lang.NoClassDefFoundError”?
【发布时间】:2013-08-01 04:34:15
【问题描述】:

我已经尝试了 Oracle 的 Java Tutorials 中的两个示例。它们都编译得很好,但是在运行时,都出现了这个错误:

Exception in thread "main" java.lang.NoClassDefFoundError: graphics/shapes/Square
    at Main.main(Main.java:7)
Caused by: java.lang.ClassNotFoundException: graphics.shapes.Square
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 1 more

我想我可能将 Main.java 文件放在错误的文件夹中。

这是目录层次结构:

graphics
├ Main.java
├ shapes
|   ├ Square.java
|   ├ Triangle.java
├ linepoint
|   ├ Line.java
|   ├ Point.java
├ spaceobjects
|   ├ Cube.java
|   ├ RectPrism.java

这里是Main.java

import graphics.shapes.*;
import graphics.linepoint.*
import graphics.spaceobjects.*;

public class Main {
    public static void main(String args[]) {
        Square s = new Square(2, 3, 15);
        Line l = new Line(1, 5, 2, 3);
        Cube c = new Cube(13, 32, 22);
    }
}

我在这里做错了什么?

更新

在我将Main 类放入graphics 包后(我在其中添加了package graphics;),将类路径设置为“_test”(包含图形的文件夹),编译它,然后使用@987654333 运行它@(从命令行),它起作用了。

更新 #2 真的晚了

我没有使用Eclipse(只是Notepad++ 和JDK),上述更新解决了我的问题。但是,这些答案似乎很多是针对 Eclipse 和IntelliJ IDEA 的,但它们的概念相似。

【问题讨论】:

  • 查看你的主类,它不在一个包中(你会在顶部有package graphics;)。 graphics 是你的包结构的负责人吗? Square的顶部有package graphics.shapes吗?
  • 您列出了 .java 文件的位置,但由于您得到的是 runtime 问题,因此您真正感兴趣的是 .class 的位置文件是以及它们是否在您的类路径中。你是如何执行 Main 类的?
  • 只需在 Eclipse 中按 Shift+ctrl+o 即可组织您的导入
  • 确保您输入了正确的类名。我收到此错误是因为我没有以大写字母开头的类名
  • 这有时会在 IntelliJ IDEA 中发生重大重构后。 右键单击您的项目并选择 -> 编译模块,然后重新启动项目,它应该会再次工作。

标签: java exception package noclassdeffounderror


【解决方案1】:

编译代码后,程序中的每个类都会得到.class 文件。这些二进制文件是 Java 解释以执行您的程序的字节码。 NoClassDefFoundError 表示负责动态加载类的类加载器(在本例中为 java.net.URLClassLoader)找不到您尝试使用的类的 .class 文件。

如果所需的类不存在,您的代码将无法编译(除非使用反射加载类),因此通常此异常意味着您的类路径不包含所需的类。请记住,类加载器(特别是 java.net.URLClassLoader)将在类路径的每个条目中的文件夹 a/b/c/ 中的包 a.b.c 中查找类。 NoClassDefFoundError 还可以表明您缺少一个已编译并尝试使用的 .jar 文件的传递依赖项。

例如,如果您有一个类com.example.Foo,编译后您将有一个类文件Foo.class。比如说你的工作目录是.../project/。该类文件必须放在.../project/com/example 中,您可以将类路径设置为.../project/

旁注:我建议利用 Java 和 JVM 语言中存在的惊人工具。 Eclipse 和 IntelliJ IDEA 等现代 IDE 以及 Maven 或 Gradle 等构建管理工具将帮助您不必(尽可能多地)担心类路径并专注于代码!也就是说,this link 解释了在命令行上执行时如何设置类路径。

【讨论】:

  • 我正在阅读这篇文章,因为我在尝试在 Android 上运行单元测试时遇到了一个错误。事实证明,就我而言,NoClassDefFoundError 是由于测试中缺少依赖项而发生的。我需要考虑依赖注入来防止这样的错误。感谢您详细的回答。
  • 由于为表单的布局设置设置 FormLayout(JGoodies) 而出现此错误。这意味着该类库存在问题需要修复。然而,它出现在 IntelliJ 中表单的布局列表中。
【解决方案2】:

我想纠正别人对NoClassDefFoundError的看法。

NoClassDefFoundError 的出现可能有多种原因,例如:

  1. ClassNotFoundException -- 找不到该引用类的 .class,无论它在编译时是否可用(即基类/子类)。
  2. 已找到类文件,但在初始化静态变量时引发异常
  3. 找到类文件,初始化静态块时引发异常

在最初的问题中,这是第一种可以通过将 CLASSPATH 设置为引用的类 JAR 文件或其包文件夹来纠正的情况。

说“在编译时可用”是什么意思?

  • 代码中使用了引用的类。
    例如:两个类,A 和 B(扩展 A)。如果在代码中直接引用 B,则在编译时可用,即 A a = new B();

说“在编译时不可用”是什么意思?

  • 编译时类和运行时类是不同的,例如,例如使用子类的类名加载基类 Class.forName("类名") 例如:两个类,A 和 B(扩展 A)。代码有
    A a = Class.forName("B").newInstance();

【讨论】:

  • 在我的例子中,我编译了一个类,他们将它移到了一个名为 app 的目录中。我必须添加一行 package app; 并重新编译,然后才能将其移动到子目录应用程序中。
  • 除了上面列出的3之外,ClassLoaders也可能导致这样的错误,基本上是ClassNotFoundException,在这种情况下类可能存在于classpath中但尝试从不同的ClassLoader加载
  • 2 和 3 是特定于类加载器的。根据 javadoc,该异常仅用于原因 1。
  • 我已经测试过case 2和case 3,不是NoClassDefFoundError,而是ExceptionInInitializerError Case 2.Class文件被定位,但是初始化静态变量时引发异常Case 3.Class文件被定位,初始化时出现异常静态块
  • @Michael,此链接表明您的堆栈跟踪也将显示 NoClassDefFoundError 对于这种情况:archive.is/YPbYI#selection-2107.0-2115.13
【解决方案3】:

NoClassDefFoundError 表示该类存在于Compile time 的类路径中,但它不存在于Runtime 的类路径中。

如果您使用的是 Eclipse,请确保在 .classpath 文件中有 shapeslinepointsspaceobjects 作为条目。

【讨论】:

  • 如何在运行时通过 try/catch 处理?
  • 此答案与您编写的方式不正确。正确的是:“这个错误的一个可能原因是......”但是可能还有其他原因导致您收到此错误,例如在运行时使用类加载器加载 JAR 文件时。
【解决方案4】:

如果您在编译和运行时遇到以下错误之一:

  • NoClassDefFoundError

  • 错误:无法找到或加载主类 hello

  • 线程“main”中的异常 java.lang.NoClassDefFoundError:javaTest/test/hello (错误名称:test/hello)

    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.access$100(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
    

-------------- 解决方案 ------ ------------------

问题主要出在包的组织上。您应该根据源代码中的包分类正确地将类排列在文件夹中。

在编译过程中,使用这个命令:

javac -d . [FileName.java]

要运行课程,请使用以下命令:

java [Package].[ClassName]

【讨论】:

  • “-d”。在 javac 命令中,创建包的文件夹结构而不是将所有 .class 文件放在根目录中,谢谢!
  • 谢谢老大,解决了编译错误。
【解决方案5】:
java.lang.NoClassDefFoundError

表示在编译时找到了一些东西,但在运行时没有找到。也许你只需要将它添加到类路径中。

【讨论】:

  • 取决于您要求的上下文。
【解决方案6】:

Java 中的 NoClassDefFoundError:

定义:

如果一个类在编译期间存在但在运行时在 java 类路径中不可用,则会出现 NoClassDefFoundError。通常,当您收到 NoClassDefFoundError 时,您会在日志中看到以下行: 线程“主”java.lang.NoClassDefFoundError 中的异常

可能的原因:

  1. 该类在 Java 类路径中不可用。

  2. 您可能正在使用 jar 命令运行程序,而清单文件的 ClassPath 属性中未定义类。

  3. 任何启动脚本都会覆盖 Classpath 环境变量。

  4. 因为 NoClassDefFoundError 是 java.lang.LinkageError 的子类,如果其中一个依赖项(如本机库)可能不可用,它也会出现。

  5. 检查日志文件中的 java.lang.ExceptionInInitializerError。静态初始化失败导致的 NoClassDefFoundError 比较常见。

  6. 如果您在 J2EE 环境中工作,多个 Classloader 之间的 Class 的可见性也会导致 java.lang.NoClassDefFoundError,详细讨论请参见示例和场景部分。

可能的解决方案:

  1. 确认所有必需的 Java 类都包含在应用程序的类路径中。最常见的错误是在开始执行依赖于某些外部库的 Java 应用程序之前没有包含所有必要的类。

  2. 应用的类路径是正确的,但是在应用执行之前Classpath环境变量被覆盖了。

  3. 验证前面提到的 ExceptionInInitializerError 没有出现在应用程序的堆栈跟踪中。

资源:

3 ways to solve java.lang.NoClassDefFoundError in Java J2EE

java.lang.NoClassDefFoundError – How to solve No Class Def Found Error

【讨论】:

    【解决方案7】:

    无类定义异常在类路径中未找到预期类时发生。

    在编译时类:类是从 Java 编译器生成的,但不知何故在运行时找不到依赖类。

    我们来看一个简单的例子:

    public class ClassA{
        public static void main(String args[]){
             // Some gibberish code...
             String text = ClassB.getString();
             System.out.println("Text is: " + text);
        }
    }
    
    public class ClassB{
        public static String getString(){
            return "Testing some exception";
        }
    }
    

    现在假设上面两个Java源代码放在某个文件夹中,比如说“NoClassDefinationFoundExceptionDemo”

    现在打开一个 shell(假设 Java 已经正确设置)

    1. 转到文件夹“NoClassDefinationFoundExceptionDemo”

    2. 编译 Java 源文件 javac 类 B javac 类A

    3. 两个文件都编译成功,并在ClassA.class和ClassB.class相同的文件夹下生成了类文件

    4. 现在,由于我们将 ClassPath 覆盖到当前工作的主管,我们执行以下命令 java -cp 。 A类 它运行成功,您将在屏幕上看到输出

    5. 现在假设您从当前目录中删除了 ClassB.class 文件。 现在你再次执行命令。 java -cp 。 ClassA 现在它会以 NoClassDefFoundException 迎接你。因为在类路径(即当前工作目录)中找不到作为 ClassA 依赖项的 ClassB。

    【讨论】:

      【解决方案8】:

      如果您的项目位于com.blahcode 之类的包中,并且您的类名为Main,则编译后的文件可能会以./out/com/blahcode/Main.class 之类的目录结构输出。对于 IntelliJ IDEA 尤其如此。

      当尝试从 shell 或 cmd 运行时,您需要 cd 到包含 com 作为子目录的目录。

      cd out
      java -classpath . com.blahcode.Main
      

      【讨论】:

        【解决方案9】:

        我今天遇到了这个问题。我有一个 Android 项目,启用 multidex 后,该项目将不再启动。

        原因是我忘记调用应该添加到 Application class 并在其他所有操作之前调用的特定 multidex 方法。

         MultiDex.install(this);
        

        按照本教程正确启用 multidex。 https://developer.android.com/studio/build/multidex.html

        您应该将这些行添加到您的应用程序类中

         @Override
          protected void attachBaseContext(Context base) {
             super.attachBaseContext(base);
             MultiDex.install(this);
          }
        

        【讨论】:

          【解决方案10】:

          在一个 NetBeans 项目上工作了几个月后,在收到“内存不足”警报后不久,我突然收到了 NoClassDefFoundError 消息。进行干净的重建没有帮助,但完全关闭 NetBeans 并重新打开项目没有错误报告。

          【讨论】:

            【解决方案11】:

            此答案特定于 service 中发生的 java.lang.NoClassDefFoundError:

            我的团队最近在升级提供服务的 rpm 后发现了此错误。 rpm 和其中的软件是用 Maven 构建的,所以我们似乎有一个编译时依赖项,它刚刚没有包含在 rpm 中。

            但是,在调查时,未找到的类与堆栈跟踪中的多个类位于同一模块中。此外,这不是最近才添加到构建中的模块。这些事实表明它可能不是 Maven 依赖问题。

            最终解决方案:重启服务!

            似乎 rpm 升级使基础 JAR 文件上的服务文件句柄无效。然后,该服务看到一个尚未加载到内存中的类,在其 jar 文件句柄列表中搜索它,但未能找到它,因为它可以从中加载类的文件句柄已失效。重新启动服务会强制它重新加载其所有文件句柄,然后允许它加载在 rpm 升级后尚未在内存中找到的类。

            【讨论】:

            • 什么是“rpm”?是否与Red Hat Linux 上的包管理有关?还是别的什么?
            • @PeterMortensen 它代表 Red Hat Package Manager,尽管最近他们使用递归命名将其称为 RPM Package Manager。
            【解决方案12】:

            对于我的项目,解决问题的是 Chrome 浏览器和 chromedriver 不兼容。我有一个非常旧的驱动程序版本,甚至无法打开浏览器。我刚刚下载了两者的最新版本并解决了问题。

            我是如何发现问题的?因为我使用 Selenium 本机 Firefox 驱动程序和我的应用程序中包含的旧版本 FF 运行我的项目。我意识到问题是浏览器和驱动程序之间的不兼容。

            希望这可以帮助任何与我有类似问题的人,这会产生同样的错误消息。

            【讨论】:

              【解决方案13】:

              如果您从 JAR 文件“启动”一个类,请确保从 JAR 完整路径开始。例如(如果 Manifest 中没有指定你的“主类”):

              java -classpath "./dialer.jar" com.company.dialer.DialerServer
              

              如果有任何依赖,比如对其他JAR文件的依赖,你可以解决这样的依赖

              • 通过将此类 JAR 文件(每个 JAR 文件的完整路径)添加到类路径中。例如,
              java -classpath "./libs/phone.jar;./libs/anotherlib.jar;./dialer.jar" com.company.dialer.DialerServer
              
              • 或通过将“依赖 JAR 文件”添加到清单来编辑 JAR 清单。这样的清单文件可能如下所示:
              Manifest-Version: 1.0
              Class-Path: phone.jar anotherlib.jar
              Build-Jdk-Spec: 1.8
              Main-Class: com.company.dialer.DialerServer
              
              • 或者(如果您是拥有源代码的开发人员)您可以使用 Maven 通过添加到 *.pom 文件来为您准备清单:
              <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-jar-plugin</artifactId>
                  <configuration>
                      <archive>
                          <manifest>
                              <addClasspath>true</addClasspath>
                              <mainClass>com.company.dialer.DialerServer</mainClass>
                              <!-- Workaround for Maven bug #MJAR-156 (https://jira.codehaus.org/browse/MJAR-156) -->
                              <useUniqueVersions>false</useUniqueVersions>
                          </manifest>
                      </archive>
                  </configuration>
              </plugin>
              

              请注意,上面的示例在类路径中使用; 作为分隔符(适用于Windows 平台)。在 Linux 上,将 ; 替换为 :

              例如,

              java -classpath ./libs/phone.jar:./libs/anotherlib.jar:./dialer.jar
              com.company.dialer.DialerServer
              

              【讨论】:

                【解决方案14】:

                我正在开发一个基于 Eclipse 的应用程序,也称为 RCP(富客户端平台)。 我在重构后一直面临这个问题(将一个类从插件移动到新的类)。

                清理项目和 Maven 更新没有帮助。

                问题是由未自动更新的Bundle-Activator引起的。手动更新新插件中 MANIFEST.MF 下的 Bundle-Activator 解决了我的问题。

                【讨论】:

                  【解决方案15】:

                  如果你使用多个模块,你应该有

                  dexOptions {
                      preDexLibraries = false
                  }
                  

                  在您的构建文件中。

                  【讨论】:

                    【解决方案16】:

                    我在使用 Android Studio 进行 Android 开发时遇到了同样的问题。提供的解决方案很笼统,对我没有帮助(至少对我而言)。

                    经过数小时的研究,我找到了以下解决方案,它可能对使用 Android Studio 进行开发的 Android 开发人员有所帮助。

                    修改设置如下:

                    首选项构建、执行、部署即时运行 → *取消选中第一个选项。

                    有了这个改变,我就可以开始运行了。

                    【讨论】:

                      【解决方案17】:

                      我在这条链中的两分钱:

                      确保 classpath 包含 完整 路径(/home/user/lib/some_lib.jar 而不是 ~/lib/some_lib.jar),否则您仍然会遇到 NoClassDefFoundError 错误。

                      【讨论】:

                      • 这部分是正确的,但它更复杂。 1) 您可以在类路径中使用相对路径,但它们必须可由 JVM 解析……相对于 JVM 的当前目录。这使它们脆弱。 2) 您可以在设置类路径环境变量时使用~ 和其他shell 元字符,但仅提供您用于设置变量的机制将它们扩展为真实路径名。如果您使用bash,您可以获得“混合”结果。例如,查看在命令行中键入echo ~:~ 时得到的结果。第一个 ~ 已展开,但第二个未展开。
                      【解决方案18】:

                      不要在模块外使用测试类

                      我没有解决方案,只是另一种“编译时存在,运行时不存在”的情况。

                      我试图使用来自另一个模块中的另一个测试类的 JUnit 测试类中的一种非常方便的方法。这是一个禁忌,因为测试代码不是打包 jar 的一部分,但我没有意识到,因为它在 Eclipse 中对用户类是可见的。

                      我的解决方案是将方法放在作为生产代码一部分的现有实用程序类中。

                      【讨论】:

                        【解决方案19】:

                        当运行时类加载器加载的类无法访问 Java 根加载器已加载的类时,我会收到 NoClassFoundError。由于不同的类加载器位于不同的安全域中(根据 Java),JVM 不允许在运行时加载器地址空间中解析已经由 rootloader 加载的类。

                        使用 'java -javaagent:tracer.jar [YOUR 'java' ARGUMENTS]' 运行您的程序

                        它产生显示加载的类的输出,以及加载该类的加载器环境。跟踪无法解析类的原因非常有帮助。

                        // ClassLoaderTracer.java
                        // From: https://blogs.oracle.com/sundararajan/entry/tracing_class_loading_1_5
                        
                        import java.lang.instrument.*;
                        import java.security.*;
                        
                        // manifest.mf
                        // Premain-Class: ClassLoadTracer
                        
                        // jar -cvfm tracer.jar manifest.mf ClassLoaderTracer.class
                        
                        // java -javaagent:tracer.jar  [...]
                        
                        public class ClassLoadTracer
                        {
                            public static void premain(String agentArgs, Instrumentation inst)
                            {
                                final java.io.PrintStream out = System.out;
                                inst.addTransformer(new ClassFileTransformer() {
                                    public byte[] transform(ClassLoader loader, String className, Class classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer) throws IllegalClassFormatException {
                        
                                        String pd = (null == protectionDomain) ? "null" : protectionDomain.getCodeSource().toString();
                                        out.println(className + " loaded by " + loader + " at " + new java.util.Date() + " in " + pd);
                        
                                        // dump stack trace of the thread loading class
                                        Thread.dumpStack();
                        
                                        // we just want the original .class bytes to be loaded!
                                        // we are not instrumenting it...
                                        return null;
                                    }
                                });
                            }
                        }
                        

                        【讨论】:

                          【解决方案20】:

                          这件事发生在Android Studio

                          对我有用的解决方案:只需重新启动 Android Studio。

                          【讨论】:

                            【解决方案21】:

                            检查您的类中是否有静态处理程序。如果是这样,请小心,因为静态处理程序只能在具有循环器的线程中启动,可能会以这种方式触发崩溃:

                            1. 首先,在一个简单的线程中创建类的实例并捕获崩溃。

                            2. 然后在主线程调用Class的field方法,会得到NoClassDefFoundError。

                            这里是测试代码:

                            public class MyClass{
                                   private static  Handler mHandler = new Handler();
                                   public static int num = 0;
                            }
                            

                            在 Main 活动的 onCreate 方法中,添加测试代码部分:

                            @Override
                            protected void onCreate(Bundle savedInstanceState) {
                                super.onCreate(savedInstanceState);
                                setContentView(R.layout.activity_main);
                                //test code start
                                new Thread(new Runnable() {
                                    @Override
                                    public void run() {
                                        try {
                                            MyClass myClass = new MyClass();
                                        } catch (Throwable e) {
                                            e.printStackTrace();
                                        }
                                    }
                                }).start();
                            
                                try {
                                    Thread.sleep(1000);
                                } catch (InterruptedException e) {
                                    e.printStackTrace();
                                }
                                MyClass.num = 3;
                                // end of test code
                            }
                            

                            有一个简单的方法来修复它,使用 handlerThread 到 init 处理程序:

                            private static Handler mHandler;
                            private static HandlerThread handlerThread = new HandlerThread("newthread");
                            static {
                                handlerThread.start();
                                mHandler = new Handler(handlerThread.getLooper(), mHandlerCB);
                            }
                            

                            【讨论】:

                              【解决方案22】:

                              此异常的一个错误来源可能源于 Proguard 的定义不一致,例如失踪了

                              -libraryJars "path.to.a.missing.jar.library"。

                              这解释了为什么编译和运行工作正常,因为 JAR 文件在那里,而清理和构建失败。记得在 ProGuard 设置中定义新添加的 JAR 库!

                              请注意,来自 ProGuard 的错误消息确实不符合标准,因为它们很容易与 JAR 文件根本不存在时到达的类似 Ant 消息混淆。只有在最底层才会有一点 ProGuard 的麻烦。因此,开始搜索传统的类路径错误等是很合乎逻辑的,但这将是徒劳的。

                              显然,NoClassDefFound 异常将是运行时的结果,例如,生成的可执行 JAR 文件基于缺乏 ProGuard 一致性而构建。有人称它为 ProGuard “地狱”。

                              【讨论】:

                                【解决方案23】:

                                我使用FileSync plugin for Eclipse,所以我可以在 Tomcat 上进行实时调试。我收到了NoClassFoundError,因为我在 Tomcat 的 metadata 中为 Eclipse 工作区 =&gt; classes 中的 bin 目录添加了同步条目,但我还没有为 extlib 目录添加文件夹同步在 Eclipse 中=&gt;

                                C:\Users\Stuart\eclipse-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\webapps\myApp\WEB-INF\lib

                                【讨论】:

                                  【解决方案24】:

                                  如果您最近像这样在 Android Studio 中添加了 multidex 支持:

                                  // To support MultiDex
                                  implementation 'com.android.support:multidex:1.0.1'
                                  

                                  所以您的解决方案只是从 MultiDexApplication 而不是 Application 扩展:

                                  public class MyApp extends MultiDexApplication {
                                  

                                  【讨论】:

                                    【解决方案25】:

                                    在我的环境中,我在单元测试中遇到了这个问题。将一个库依赖项附加到 *.pom 后,问题就解决了。

                                    例子:

                                    错误信息:

                                    java.lang.NoClassDefFoundError: com/abc/def/foo/xyz/Iottt
                                    

                                    POM内容:

                                    <dependency>
                                        <groupId>com.abc.def</groupId>
                                        <artifactId>foo</artifactId>
                                        <scope>test</scope>
                                    </dependency>
                                    

                                    【讨论】:

                                      【解决方案26】:

                                      我在 Git 分支更改后收到此错误。对于 Eclipse 的特定情况,org.eclipse.wst.common.component 文件.settings 目录中缺少行。如下所示。

                                      使用 Maven 安装恢复项目依赖项会有所帮助。

                                      【讨论】:

                                        【解决方案27】:

                                        如果您使用的是gradlew,请转到./gradle/wrapper/gradle-wrapper.properties 并将distributionUrl 更改为Gradle 的正确版本。

                                        如果您使用的是JDK14,请尝试:

                                        distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-bin.zip
                                        

                                        【讨论】:

                                          【解决方案28】:

                                          对于MeteorCordova 用户,

                                          这可能是由您使用的 Java 版本引起的。对于 Meteor 和 Cordova,暂时坚持使用版本 8。

                                          1. 检查可用的 Java 版本 /usr/libexec/java_home -V 并查找 Java 版本 8 的路径名

                                          2. 为 Java 版本 8 设置路径 export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home

                                          3. 检查是否完成 echo $JAVA_HOME

                                          继续并继续编码。

                                          【讨论】:

                                            【解决方案29】:

                                            Java 11 + Eclipse 解决方案:

                                            如果您没有在 Eclipse 项目中使用 module-info.java,并且您手动添加了 JAR 文件而不是使用 Maven/Gradle,则此解决方案适合您。

                                            1. 右键项目→构建路径配置构建路径选项卡
                                            2. 从模块路径中删除有问题的 JAR 文件
                                            3. 将 JAR 文件添加到类路径

                                            更多信息在 In Eclipse, what is the difference between modulepath and classpath?.

                                            【讨论】:

                                              【解决方案30】:

                                              我的Genymotion 设备经常发生这种情况。

                                              确保安装 Genymotion 的驱动器上有足够的可用内存。

                                              【讨论】:

                                              • 您对此有什么参考吗?
                                              • 不,我只是经常用完磁盘空间,除非我释放大量空间+删除/重新安装 Genymotion 虚拟设备,否则我会不断收到此错误。
                                              猜你喜欢
                                              • 2019-01-08
                                              • 1970-01-01
                                              • 2018-07-30
                                              • 2016-08-26
                                              • 2017-02-15
                                              • 1970-01-01
                                              相关资源
                                              最近更新 更多