2012-06-27 83 views
0

因此,下面的代碼在Eclipse中工作,但它在CL中不起作用。我認爲它與JDBC連接器有關,但我不確定。它不會拋出任何錯誤,它只是不執行。例如,它甚至不會打印「EDF」。有什麼建議麼?Java - JDBC在Eclipse中工作不是CL

//Connection conn = null; 
    String url = "jdbc:mysql://localhost/"; 
    String db = "db"; 
    String driver = "com.mysql.jdbc.Driver"; 
    String table = "order_queue"; 
    Connection conn = null; 

    // Upload trade data to order_queue table 
    try { 
     Class.forName(driver); 
     System.out.print("EDF"); 
     try { 
      conn = DriverManager.getConnection(url+db,"root",""); 
      Statement st = conn.createStatement(); 
      String sql = "INSERT INTO " + table + " (name) VALUES("APPLE"); 
      st.executeUpdate(sql); 
      conn.close(); 

     } catch (SQLException s) { 
      s.printStackTrace(); 
      orderMessage = "ERROR: Problem executing order. Please try again!"; 
     } 
    } catch (ClassNotFoundException cnfe){ 
     orderMessage = "ERROR: Problem connecting to OMS database. Contact technical support or try again later."; 
    } 

回答

0

如果它不打印EDF,您在加載庫時遇到問題。您是否添加了對該庫的引用?

0

我建議你在外部try catch塊中捕獲異常。因此,其他任何異常都將是你不知道並打印出來的。你是否在你的CL類路徑中加載了mysql連接器java jar文件? (順便說一下,什麼是CL?)

0

的原因是這一行:

Class.forName(driver); 

MySQL JDBC驅動程序是不是在你的類路徑中。如果你想確保這是原因一行添加到您的代碼:

} catch (ClassNotFoundException cnfe){ 
     orderMessage = "ERROR: Problem connecting to OMS database. Contact technical support or try again later."; 
     cnfe.printStackTrace(); 

    } 
0

這部作品在日食的原因可能是因爲你已經將其添加到您的Eclipse類路徑的項目,因此它會自動變包含在您運行的任何主程序中。

對於命令行,請確保您的類路徑是正確的設置:

java -cp classes:/path/to/driver.jar MainClass 

這裏最重要的部分是「-cp /path/to/driver.jar」。 「-cp」參數應該包括所有的jar(由*:NIX和;在windows上分隔)以及類的存儲目錄。

另外,地方創建您的JAR文件「lib」目錄下,並做到這一點:

java -cp "classes:lib/*" MainClass 

一旦Java看到一個*一樣,它假設你要查找指定目錄下的所有jar文件。

+0

異常 「主要」 java.lang.NoClassDefFoundError:執行 引起:拋出java.lang.ClassNotFoundException:執行 \t在java.net.URLClassLoader的$ 1.run(URLClassLoader.java:202) \t是java .security.AccessController.doPrivileged(本機方法) \t在java.net.URLClassLoader.findClass(URLClassLoader.java:190) \t在java.lang.ClassLoader.loadClass(ClassLoader.java:306) \t在sun.misc .Launcher $ AppClassLoader.loadClass(Launcher.java:301) \t at java.lang.ClassLoader.loadClass(ClassLoader.java:247)any suggestions ? – scriptdiddy

+0

看到我的編輯,你需要添加你的classes目錄到命令行(我假設它被稱爲「類」) – Matt

0

嘗試:java -cp /path/to/jdbc/driver.jar :.螺紋YourMainClass

+0

它給我這個錯誤信息?在線程異常 「主要」 java.lang.NoClassDefFoundError:執行 引起:拋出java.lang.ClassNotFoundException:執行 \t在java.net.URLClassLoader的$ 1.run(URLClassLoader.java:202) \t在java.security.AccessController .doPrivileged(Native Method) \t at java.net.URLClassLoader.findClass(URLClassLoader.java:190) \t at java.lang.ClassLoader。loadClass(ClassLoader.java:306) \t at sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:301) \t at java.lang.ClassLoader.loadClass(ClassLoader.java:247) – scriptdiddy

相關問題