2013-09-16 26 views
1

我工作在Windows 8類未發現異常一切似乎是正確

下面使用MySQL連接口J Java和MySQL之間的簡單連接即使是我試圖執行代碼:

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

public class Version { 

public static void main(String[] args) { 

    Connection con = null; 
    Statement st = null; 
    ResultSet rs = null; 

    String url = "jdbc:mysql://localhost:3306/test"; 
    String user = "testuser"; 
    String password = "test623"; 

    try { 
     con = DriverManager.getConnection(url, user, password); 
     st = con.createStatement(); 
     rs = st.executeQuery("SELECT VERSION()"); 

     if (rs.next()) { 
      System.out.println(rs.getString(1)); 
     } 

    } catch (SQLException ex) { 
     Logger lgr = Logger.getLogger(Version.class.getName()); 
     lgr.log(Level.SEVERE, ex.getMessage(), ex); 

    } finally { 
     try { 
      if (rs != null) { 
       rs.close(); 
      } 
      if (st != null) { 
       st.close(); 
      } 
      if (con != null) { 
       con.close(); 
      } 

     } catch (SQLException ex) { 
      Logger lgr = Logger.getLogger(Version.class.getName()); 
      lgr.log(Level.WARNING, ex.getMessage(), ex); 
     } 
    } 
} 
} 

編譯: javac的Version.java(不用誤差併產生類文件)

執行: java命令 「路徑到MySQL連接器的java jar文件」 版本

執行結果:

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

任何想法,我錯了?

+0

如果你'jar xf'新編譯的jarfile會發生什麼?什麼文件留在新建的目錄中? – Rogue

回答

3

您必須將包含Version.class的目錄添加到類路徑以及mysql-connector-jar。

如果你沒有添加一個類路徑參數到調用java默認會在當前目錄中尋找類文件。如果你添加一個類路徑,java將只有搜索提及的jar文件/目錄的類文件,當前目錄必須明確包含爲.

+0

好友你的解決方案工作,但你會告訴我爲什麼這是必需的? – Isank

+0

增加了對答案的解釋。 –

+0

謝謝您的簡單和準確的答案:) – Isank