我正在尝试运行这个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.
答案 0 :(得分:3)
该类需要声明为public
public class Version{
//rest of code
}
默认情况下,类是package-private
,如Oracles Java Tutorials中所述:
如果一个类没有修饰符(默认值,也称为 package-private),它只在自己的包中可见。
当程序试图运行时,找不到Version
类,因为它不可公开访问。