0

connect()3つの単純な関数、、、executeStatement()を使用して、Oracleデータベースに接続するクラスを作成しましたdisconnect()。このクラスが機能するには、Oracleの「薄い」JDBC Jarが必要であるため、「参照ライブラリ」の一部です。

私が今やりたいのは、他のプログラムがそれを利用できるように、上記のクラスをJARファイルとしてエクスポートすることです。しかし、これを実行しようとすると、次の問題が発生します。

Exception in thread "main" java.lang.NoClassDefFoundError: oracle/jdbc/driver/OracleDriver
Caused by: java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver

MYJarファイルにoracleJarファイルが含まれるようにするには、どのような方法を使用できますか?

4

4 に答える 4

2

複数の jar からクラスをロードするために、Java はいわゆるclasspathを使用します。これはjarのリストですが、jarのコンテンツと同じ構造を持つディレクトリでもあります。

このリストは、java次の へのパラメータによって定義されます-cp。ここなどのドキュメントを参照してください。

java -cp jar1.jar;jar2.jar com.my.Class

また

java -cp jar1.jar;jar2.jar -jar main.jar

また、依存関係の jar を一覧表示できる MANIFEST.MF について調べることもできます。

于 2013-01-14T19:18:22.673 に答える
1

プログラム (コードを含む) に必要なすべての jar をクラスパスに追加する必要があります。例えば:

java -cp jar1.jar;jar2.jar com.my.Class

クラスパスは、JVM がコードをロードするときにコードを探す場所を定義します。コマンド ラインから Java プログラムを実行するための簡単なチュートリアルを次に示します。

http://www.sergiy.ca/how-to-compile-and-launch-java-code-from-command-line/

于 2013-01-14T19:22:10.813 に答える
0

jar ファイルを完全に自己完結させ、クライアント コードに公開される依存関係を持たないようにする場合は、依存関係の名前を変更して jar に含めるJar Jar リンクを試すことができます。

他の可能性については、この同様の質問への回答に記載されています。

于 2013-01-14T19:24:17.237 に答える
0

この回答を見てください:カスタム マニフェスト ファイルを使用して、プロジェクト クラスとプロジェクトの依存関係を jar として含む "uber" jar を作成することは可能ですか?

「uberjar」でググることもできます。これは、すべての組み込みクラスを使用して jar を作成する方法を説明しています。

クラスパスは引き続き使用できます。

java -cp jar1.jar;jar2.jar com.my.Class
于 2013-01-14T19:23:13.760 に答える