簡體   English   中英

mysql JDBC 連接 NoClassDefFoundError

[英]mysql JDBC Connection NoClassDefFoundError

我正在嘗試在 Windows 2008 服務器上測試 mySQL JDBC 連接。 我已經下載了 JDBC 驅動程序,它在“C:\\Program Files\\MySQL\\MySQL Connector J\\mysql-connector-java-5.1.34-bin.jar”創建了一個 jar 文件。 當我運行一個小程序來測試我的 jdbc 連接時,我收到“NoClassDefFound”錯誤。 我在這里缺少什么?

我確實在類路徑中設置了 jdbc jar

C:\>echo %CLASSPATH%
C:\Program Files\MySQL\MySQL Connector J\mysql-connector-java-5.1.34-bin.jar;

我已將 jar 放在我擁有 DBDemo.java (C:\\test) 的相同位置

演示數據庫

import java.sql.*;
import java.util.Properties;
public class DBDemo
{
// The JDBC Connector Class.
private static final String dbClassName = "com.mysql.jdbc.Driver";
// Connection string. emotherearth is the database the program
// is connecting to. You can include user and password after this
// by adding (say) ?user=paulr&password=paulr. Not recommended!
private static final String CONNECTION =
                      "jdbc:mysql://127.0.0.1/emotherearth";
public static void main(String[] args) throws
                         ClassNotFoundException,SQLException
{
    System.out.println(dbClassName);
    // Class.forName(xxx) loads the jdbc classes and
    // creates a drivermanager class factory
    Class.forName(dbClassName);
    // Properties for user and password. Here the user and password are both 'paulr'
    Properties p = new Properties();
    p.put("user","paulr");
    p.put("password","paulr");
    // Now try to connect
    Connection c = DriverManager.getConnection(CONNECTION,p);
    System.out.println("It works !");
    c.close();
}
}

*錯誤 *

C:\Program Files\Java\jdk1.6.0_45\bin>java c:\test\DBDemo
Exception in thread "main" java.lang.NoClassDefFoundError: c:\test\DBDemo
Caused by: java.lang.ClassNotFoundException: c:\test\DBDemo
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
 Could not find the main class: c:\test\DBDemo.  Program will exit.
C:\Program Files\MySQL\MySQL Connector J\mysql-connector-java-5.1.34-bin.jar;

您的CLASSPATH似乎沒有. 這是DBDemo所在的當前工作目錄。 所以添加. 也到您的CLASSPATH 之后你的CLASSPATH會像

.;C:\Program Files\MySQL\MySQL Connector J\mysql-connector-java-5.1.34-bin.jar;

編輯

還嘗試將mysql-connector-java-5.1.34-bin.jar的內容提取到一個文件夾中,並根據該文件夾更改CLASSPATH

線程“main”中的異常 java.lang.NoClassDefFoundError

java 試圖找到您的.class文件的地方之一是您的當前目錄。 因此,如果您的.class文件在c:\\test\\ ,您應該將當前目錄更改為該目錄。

要更改目錄,請在提示符下鍵入以下命令並按 Enter:

cd c:\test\

set CLASSPATH = .;C:\Program Files\MySQL\MySQL Connector J\mysql-connector-java-5.1.34-bin.jar;C:\Program Files\Java\jdk1.6.0_45\lib\tools.jar;

set PATH = C:\Program Files\Java\jdk1.6.0_45\bin

使用此命令執行程序應該可以解決問題:

c:\test>java DemoDB

這個問題可能有多種原因,但最常見的一個是類或依賴項無法相互看到,您必須驗證每個類或依賴項的導入,如果您重命名了包、類或依賴項,則JVM找不到尋求階級或依賴。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM