0

私は学校のプロジェクトとして、マルチプラットフォームの分散データベース システムを行っています。

Java でデータベースからデータを抽出する必要があるため、jdbc コネクタを動的にロードします

Windowsで完璧に動作

しかし、Linuxでは次のエラーが発生しました:

「jdbc:mysql://... に適したドライバーが見つかりませんでした」

これはコードです:

File f = new File("mysql-connector-java-5.1.24-bin.jar");
URLClassLoader urlCl = new URLClassLoader(new URL[] { f.toURL()},System.class.getClassLoader());
Class conector = urlCl.loadClass("com.mysql.jdbc.Driver");
conector.newInstance();


Connection conexion = DriverManager.getConnection("jdbc:mysql://localhost/test","root",""); 
Statement instruccion = conexion.createStatement();
ResultSet tabla = instruccion.executeQuery("select * from prueba where uno=1");
while(tabla.next())
{
     System.out.println(tabla.getString(1));
     System.out.println(tabla.getString(2));
}

 conexion.close();

どうすればいいのかわからない。

これは、各サイトでのコネクタのインストールを回避するために作成されたものです。

postgresql load postgres jdbc conector の場合、mysql などの場合、各 DB の構成を含むファイルを渡します...

提案?

4

1 に答える 1

1

コネクタを lib サブディレクトリに入れてから、このディレクトリに含まれるすべての jar を Java Class-Path に渡さないのはなぜですか?

サンプル フォルダ ツリー:

  • マイアプリ
    • 置き場
      • launcher.sh
      • MyApp.jar
    • ライブラリ
      • myLib.jar

launcher.sh スクリプトは次のとおりです。

#!/bin/sh
#Set basedir
LAUNCHER_DIR=$(cd $(dirname $0); pwd)

#Set Java Class-Path
CLASSPATH="$LAUNCHER_DIR/bin/MyApp.jar"$(find "$LAUNCHER_DIR" -name '*.jar' -printf ":%p")

#Launch application
java -cp "$CLASSPATH" com.company.MyApp $*

編集: ドキュメントで説明されているように、 File.toURLを直接使用することはお勧めしません。File.toURI().toURL() を実行する必要があります。

于 2013-06-13T10:26:43.620 に答える