首页 > 解决方案 > 线程“主”java.lang.NoClassDefFoundError 中的异常:解决方案(错误名称:解决方案)

问题描述

class solution
{
    void table(final int n) {
        for (int i = 1; i <= 10; i++) {
            System.out.println(n + " X " + i + " = " + n * i);
        }
    }
}

class Solution {
    public static void main(final String args[]) {
        solution os = new solution();
        Scanner ob = new Scanner(System.in);
        int n = ob.nextInt();
        os.table(n);
    }
}

运行java解决方案后,这是错误消息

Exception in thread "main" java.lang.NoClassDefFoundError: Solution (wrong name: solution)
        at java.base/java.lang.ClassLoader.defineClass1(Native Method)
        at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
        at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:151)
        at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:821)
        at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:719)
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:642)
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:600)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
        at Solution.main(table.java:13)

找不到解决方案 当我早些时候升级到 Java 14 时,这个错误开始弹出我有 java 8 这个代码运行没有问题。

标签: javacompiler-errors

解决方案


始终遵循最佳实践。不要对同一个包中的类使用相同的名称。

package com.india.demo;

public class solution
{
    public void table(final int n) {
        for (int i = 1; i <= 10; i++) {
            System.out.println(n + " X " + i + " = " + n * i);
        }
    }
}
------------------
package com.india.string;

import java.util.Scanner;

import com.india.demo.solution;

public class Solution {
    public static void main(final String args[]) {
        solution os = new solution();
        Scanner ob = new Scanner(System.in);
        int n = ob.nextInt();
        os.table(n);
    }
}

This will work.

推荐阅读