0

議論について多くの議論を見つけましたが、解決策はありません。

機能するために、jdbc ドライバーも含む単純なプラグイン (jar) を作成したいと考えています。このプラグインは、より大きなアプリ内で使用されます。

このように非常に単純なメインを作成すると:

public static void main(String[] args) {
        URL url;
        try {
            File f = new File("mysql-connector-java-5.1.22.jar");
            URLClassLoader child = new URLClassLoader(new URL[] { f.toURL() }, Plugin.class.getClassLoader());
            Class classToLoad = Class.forName("com.mysql.jdbc.Driver", true, child);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

私はいつもこの例外を持っています:

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:340)

Class.forName は、私のプラグイン クラスの同じパッケージにある jar を見つけることができないようです。

私は多くの解決策を試しましたが、誰もうまくいきません。直接参照せずにjarをロードすることは可能です(メインクラスの同じパッケージにあります)。

ありがとう

4

2 に答える 2

0

jar ファイルの場所は、パッケージに対して相対的であるべきではないと思います。アプリを起動した現在の作業ディレクトリにある可能性が高いです。

A4Lが言ったように、ファイルが実際にファイルを見るかどうかを確認してください。

結果の URL を印刷します。これはブラウザーで機能しますか?

試す

 f.toURI().toURL();
于 2014-07-24T16:11:07.630 に答える