2012-10-11 14 views
6

OS XにデータベースJDBCドライブのような別のJARファイルをインストールして、他のJavaアプリケーションがそれらを見つけるようにします。OS X上のJARファイルをどこにインストールすれば、他のJavaアプリケーションがそれらを見つけることができますか?

私はそれらをどこに置くのですか?私は~/Library/Java/Extensionsを試しましたが、うまくいっていません。

詳細:

OS X 10.8.2 

java version "1.6.0_35" 
Java(TM) SE Runtime Environment (build 1.6.0_35-b10-428-11M3811) 
Java HotSpot(TM) 64-Bit Server VM (build 20.10-b01-428, mixed mode) 

注:私は、アプリケーションが初期化される方法を制御できませんが、私は、アプリケーションが、それは独自のJava分布だincudeしないことを前提としていないと、それはOSインストールされたバージョンを開始すること(コマンドラインから利用可能なもの)。

また、私は、任意のCLASSPATHの設定を持っていない、とコマンドラインプログラムに利用可能であること、環境変数を忘れないでください、私は指定する必要がOS Xの

上のGUIアプリケーションに利用できるものと同じではありません開発マシンでこれを試しています。このアプローチは、Javaアプリケーションを配備する方法ではありません。

+0

あなたは依存関係管理ツールを使用していませんか? gradle、maven、ant/ivyのように?それはあなたの人生を楽にします。 – maba

答えて

1

これらは、アプリケーションのクラスパスに含める必要があります。コマンドラインから実行する場合は、例を使用します。 "java -cp〜/ Library/Java/Extensions/foo.jar Bar"

一方、Tomcatのようなアプリケーションサーバーを使用している場合は、アプリケーションの戦争中にjarをパッケージ化するかサーバーの共有ライブラリフォルダーに移動します。

10

しないでください。理由は次のとおりです。これらのJARファイルはすべてのJavaアプリケーション用に読み込まれるため、他のアプリケーションは中断します。

詳細:私はMac用のJavaアプリケーションを販売しています。特定の最新バージョンのJARファイル(JFreeChart用)が必要です。適切なExtensionsフォルダに、同じJARファイルの古いバージョンが存在することがあります。これは私のアプリを壊す。

しかし、あなたは本当にこれをしたい場合:Apple's docsによると:

拡張ライブラリ

他のプラットフォーム上で

Javaソフトウェアは、多くの場合になり $ JAVA_HOME/libに/ extディレクトリの使用中 をサポートするクラスまたはjarファイルを格納するJDKインストール。 Mac OS XのJavaには のlib/extディレクトリも含まれていますが、開発者は上記の理由と同じ理由で のディレクトリを直接変更しないでください。 /Library/Java/Extensionsディレクトリ は、追加のjarファイルまたはシステムクラスパスに配置された である必要があるJNIライブラリに使用できます。より制御されたアクセスのために、 〜/ Library/Java/Extensionsディレクトリは、ユーザレベルの サポートライブラリのインストールに使用できます。これらの ディレクトリに置かれたアイテムは、アプリケーションのクラスパスに名前を付ける必要はなく、 は、それぞれのスコープ (どのディレクトリが使用されているかに応じてシステムレベルまたはユーザーレベル)で実行されるすべてのアプリケーションで使用できます。

0

私は2番目のスティーブのコメントを受けて、MavenまたはIvyを依存関係管理に使用することをお勧めします。

ライブラリ管理はプロジェクトあたりです。更新や相互依存関係を管理する方がはるかに簡単です。 Maven(私はIvyについて知らない)は、どのlibsが古いか、お互いに矛盾しているかを教えてくれます。各プロジェクトについて、変更が他のプロジェクトを壊すかどうかを気にせずに、必要なバージョンを正確に指定できます。

-3

私の小さなデータベースプログラムをコマンドラインで実行したかったのですが、クラスパスにmysql-connector-java-5.1.29-bin.jarが必要でした。私はそれを理解しようとしばらく時間を費やして解決策を見つけました。 jaファイルをLibrary/Java/Extensionsフォルダにドロップして、マシンを再起動しました。今度は、あなたがプログラムを実行しているときにクラスパスを含めるべきだと言っていますが(java -cp ~/Library/Java/Extensions/foo.jar Bar)、それは私のためには機能しませんでした。代わりに、私は、コンパイル時間中にコマンドを発行して、私のプログラムを実行:

$ javac -cp /Library/Java/Extensions/mysql-connector-java-5.1.29-bin.jar FirstExample.java 
$ java FirstExample 

そして、これは私が得たものである...私のデータベースからのクエリデータ:

データベースへの接続

...
1、タイトル:営業担当、まず:ナンシー、最終:Davolio
ID:2、タイトル:副社長、セールス、まず:アンドリュー、最終:フラー ID:3、タイトルの文...
IDの作成 :営業担当者、ファースト:ジャネット、ラスト:リバーリング
ID:4、タイトル:営業担当、まず:マーガレット、最終:ピーコック
ID:5、タイトル:セールスマネージャー、まず:スティーブン、最終:ブキャナン
ID:6、タイトル:営業担当、まず:マイケル、最終:陶山
ID:7、タイトル:営業担当、まず:ロバート、最終:キング
ID:8、タイトル:インサイドセールスコーディネーター、まず:ローラ、最終:キャラハン
ID:9、タイトル:セールス代表者、最初:アン、ラスト:ドッドワース

さようなら!

希望します。

+0

これは、jarを_install_する場所とデータベースの例が混乱していることを説明していません。 –