java.lang.NoClassDefFoundError

时间:2013-09-12 09:41:55

标签: 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.

1 个答案:

答案 0 :(得分:3)

该类需要声明为public

public class Version{
   //rest of code
}

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

  

如果一个类没有修饰符(默认值,也称为   package-private),它只在自己的包中可见。

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