java.lang.NoClassDefFoundError

标签 java mysql

我正在尝试运行这个 java 和 mysql 程序,但是当我编译时,它没有显示任何错误。

但是当我运行代码时,它显示了一些异常..

可能是什么错误?

代码:Version.java

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;

class Version
{
    public static void main(String args[]) 
    {
        Connection con = null;
        Statement st = null;
        String cs = "jdbc:mysql://localhost:3306/google";
        String user = "root";
        String password = "root";
        try {
            con = DriverManager.getConnection(cs, user, password);
            st = con.createStatement();
            String query = "SELECT * FROM user";
            st.executeUpdate(query);
            } 
            catch (SQLException ex) 
            {
            Logger lgr = Logger.getLogger(Version.class.getName());
            lgr.log(Level.SEVERE, ex.getMessage(), ex);
            }
            finally
            {
            try 
            {
            if (st != null) 
            {
            st.close();
            }
            if (con != null) {
            con.close();
            }
            } catch (SQLException ex) 
            {
                Logger lgr = Logger.getLogger(Version.class.getName());
                lgr.log(Level.SEVERE, ex.getMessage(), ex);
            }
        }
    }
}

当我运行代码时,我收到此错误消息

错误信息

Exception in thread "main" java.lang.NoClassDefFoundError: Version
Caused by: java.lang.ClassNotFoundException: Version
        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
Could not find the main class: Version.  Program will exit.

最佳答案

类需要声明为public

public class Version{
   //rest of code
}

默认情况下,类是 package-private,如 Oracles Java 教程中所述:

If a class has no modifier (the default, also known as package-private), it is visible only within its own package.

当程序试图运行 Version 类时找不到,因为它不可公开访问。

关于java.lang.NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18760733/

相关文章:

mysql - 无法在 Amazon linux 2 上安装 mysql-community-server

php - 如何正确更新查询

mysql - SQL,查询行超过初始日期的某个日期?

mysql - Sql 一列中有多个 id

Java正则表达式得到不匹配的部分

java - 听取偏好变化

java - 如何实现网页应用的屏幕共享?

mysql - 从表中删除数据,通过两个表连接

java if 语句不一致

java - Bean 验证不适用于 spring webflux