2009-05-05 23 views
0

jarファイルにトークンクラスファイルがあります。トークン・クラス・ファイルは、jdbcを使用してデータベースからデータを取り出すクラスです。しかし、jarファイルを呼び出すと、外部のmysqlドライバjarファイルを再認識していないようです。mysqlドライバjarが認識されない

エラーがこの行を指しています Class.forName(driver);.

私はantビルドファイルと私が考えることができるすべてのクラスパスでmysqlドライバを参照しました。

<mkdir dir="build/server/dist"/> 
    <jar destfile="build/server/dist/VNCOverHTTPServer.jar" basedir="build/server/classes"> 
     <manifest> 
      <attribute name="Main-Class" value="jhttpserver.JHttpServer"/> 
      <attribute name="Class-path" value="lib/servlet.jar lib/mysql-connector-java-5.1.7-bin.jar config/"/> 
     </manifest> 
    </jar> 

何も作業していませんか?どんな助けもありがとう。

にjava.lang.ClassNotFoundException

感謝します。javaでjava.security.AccessController.doPrivileged(ネイティブメソッド)でjava.net.URLClassLoader $ 1.run(URLClassLoader.java:200) で mysqlの。 net.URLClassLoader.findClass(URLClassLoader.java:188) at java.lang.ClassLoader.loadClass(ClassLoader.java:316) at sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:288) at java。 lang.ClassLoader.loadClass(ClassLoader.java:251) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:374) at java.lang.Class。 forName0(ネイティブメソッド) at java.lang.Class.forName(Class.java:169) at socksviahttp.server.token.getConnection(token.java:58) at socksviahttp.server.token.exists(token.java) :javax.servlet.http.HttpServlet.service 75)socksviahttp.server.ServletSocks.doPost(ServletSocks.java:328で ) (HttpServlet.java:760)javax.servlet.http.HttpServlet.serviceで (HttpServletを.javaファイル:jhttpserver.JHttpServerThread.run(JHttpServerThread.java:217)

+0

mysql-connector jarがbuild/server/dist/libにあり、java -jar VNCOverHTTPServer.jarを使用して呼び出されます。そうでないと、ライブラリは見つかりません – Petesh

+0

yes jarファイルはまだ認識されていません –

答えて

0

で853) あなたのjarファイルを実行し、いずれかをダブルクリックするか、コマンドラインからの別):

java -jar VNCOverHTTPServer.jar 

あなたのjarがあるディレクトリには、必要なjarを持つlibフォルダが必要です。これは本当ですか?

更新:エラーレポートから、URLClassLoaderを使用してmysqlクラスをロードしていることが明らかです。クラスパスにjarファイルを追加することは役に立ちません。クラスをURLリンクで使用できるようにする必要があります。

+0

はい必要なjarファイルはlibディレクトリにあります –

+0

エラートレースを投稿できますか? – kgiannakakis

+0

ちょうどお礼しました –

1

とMySQLのドライバを登録する行は、の線に沿って何かである:

Class.forname("com.mysql.jdbc.Driver"); 

クラスローダエラーが飾り気のない「mysqlの」のクラスではなく、パッケージによって参照される1つのようです。フル・クラス名を指定せずにクラスを動的にロードする場合にのみ、このエラーが表示されます。

mysqlドライバクラスの読み込みにはどのようなものがありますか?それがバネの設定ファイルであれば、おそらく設定ファイルに完全なクラス名を持っていないでしょう。

そして、私は小文字の「Class-path」に気付きました。

+0

あなたが書いているのですが、私はdatabase.propertiesファイルを持っていました。それに2つのバージョンがありました。一般的なものは、フィールド全体に「mysql」の値を持っていました。ケースクローズ –

関連する問題