2009-09-03 5 views
2

...私はこのコードを実行している問題を抱えていますそれはます。java.sql.SQLException:ダービー:JDBCが見つかりません、適切なドライバ</p> <p>このコードはappacheダービーを使用して作るために:私は、JDBCと初心者だ

 java -jar "C:\Program Files\Sun\JavaDB\lib\derbyrun.jar" server start 

そして、私はクラスパスに設定されたプログラム

 java -classpath derbyclient.jar -jar TestDB.jar 

を始めた..私は最初のダービーサーバを開始した作業 C:\プログラムファイル\日\ JavaDB \ libに\ルderby.jar

そして、私はいつもその例外

ます。java.sql.SQLException取得しています。jdbcが見つかりません、適切なドライバ:ダービー:// localhostを:1527/ BOOKDBを、java.sqlので=真 を作成します。 DriverManager.getConnection(DriverManager.java:602) at java.sql.DriverManager.getConnection(DriverManager.java:185) at TestDB.getConnection(TestDB.java:63) at TestDB.runTest(TestDB.java:20) at TestDB.main(TestDB.java:11)​​

import java.sql.*; 
import java.io.*; 
import java.util.*; 


class TestDB 
{ 
    public static void main(String args[]) 
    { 
     try 
     { 
     runTest(); 
     } 
     catch (SQLException ex) 
     { 
     for (Throwable t : ex) 
      t.printStackTrace(); 
     } 
     catch (IOException ex) 
     { 
     ex.printStackTrace(); 
     } 
    } 

    public static void runTest() throws SQLException, IOException 
    { 
     Connection conn = getConnection(); 
     try 
     { 
     Statement stat = conn.createStatement(); 

     stat.executeUpdate("CREATE TABLE Greetings (Message CHAR(20))"); 
     stat.executeUpdate("INSERT INTO Greetings VALUES ('Hello, World!')"); 

     ResultSet result = stat.executeQuery("SELECT * FROM Greetings"); 
     if (result.next()) 
      System.out.println(result.getString(1)); 
     result.close(); 
     stat.executeUpdate("DROP TABLE Greetings"); 
     } 
     finally 
     { 
     conn.close(); 
     } 
    } 

    public static Connection getConnection() throws SQLException, IOException 
    { 
     Properties props = new Properties(); 
     FileInputStream in = new FileInputStream("database.properties"); 
     props.load(in); 
     in.close(); 

     String drivers = props.getProperty("jdbc.drivers"); 
     if (drivers != null) System.setProperty("jdbc.drivers", drivers); 
     String url = props.getProperty("jdbc.url"); 
     String username = props.getProperty("jdbc.username"); 
     String password = props.getProperty("jdbc.password"); 

     return DriverManager.getConnection(url, username, password); 
    } 
} 

答えて

5

-jarおよび-classpathパラメータを使用してjavaコマンドを呼び出すと、-classpathパラメータは無視されます。 documentation for the Java launcherを参照してください。

することはできいずれかを使用:

のUnix/Linuxの場合:

java -classpath derbyclient.jar:TestDB.jar TestDB 

のWindows:

java -classpath derbyclient.jar;TestDB.jar TestDB 

またはクラスパスに追加しますderbyclient.jarたマニフェストを作ります。

+0

申し訳ありませんが、私は今これを持っています! スレッド "main"の例外java.lang.NoClassDefFoundError:TestDB –

+0

まあもう申し訳ありませんが、もうすぐsimonnです。私は少し間違いを犯しました!! –

2

-jarを使用すると、-classpathは無視されます。 java command tool docsから:

When you use this option, the JAR file is the source of all user classes, and other user class path settings are ignored.

-jarなし-classpathを使用して明示的にmainメソッドを含む型を指定、またはあなたのjar file manifest参照ダービーのjarファイルを作成するのどちらか。