- PR -

JARにJDBCの埋め込み方

1
投稿者投稿内容
未記入
会議室デビュー日: 2007/06/29
投稿数: 2
投稿日時: 2007-06-29 09:35
 JAVAというより、Eclipseの使い方なのかも知れませんが解らないのです。

 JDBCを使いデータベースにアクセスするプログラムを作ったのですが、
Eclipse上では動くのに、Windows上では動かないのです。

原因はEclipse上ではJDK内のJDBCの入っているJREでプログラムを起動し、
Windows上ではJDBCの入っていないJREで起動させている為だと解りました。
(WindowsのJREにJDBCをコピーしたら起動したため)

問題はここからで、このプログラムはJDBCが入っているか入っていないか
解らないパソコンで使う事が多そうなのです。
そのために、JARにエクスポートする時にJDBCのみを一緒にして、
JDBCの入っていないパソコンでも使えるようにしたいのです。

自分でも色々試してみましたが、ビルドパスの構築などはEclipse上での関係ぽいし、
エクスポートする時のファイルの選択欄に幾らやっても表示されないのです。

万策つきた状態なので、可能か不可能だけでも良いので教えて貰えないでしょうか。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2007-06-29 10:30
Eclipseの操作は知らないですが、可能なはずです。
カーニー
ぬし
会議室デビュー日: 2003/09/04
投稿数: 358
お住まい・勤務地: 東京
投稿日時: 2007-06-29 10:41
いったんJDBCのjarファイルを展開(jar xf)して、それをインポートすればよいと思います。
でも、普通はJDBCのjarファイルも一緒に配布するもんですよ?
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-06-29 10:48
jarファイルは単なるzip圧縮なので、拡張子をzipに変えて解凍してみましょう。
回答したフォルダの中にJDBCのライブラリは存在しませんよね?
これが、「Windows上では動かない」理由です。

Windows上でも、コマンドプロンプトを立ち上げてそこからjavaコマンドで
classpathを指定して該当のjarファイルを起動すると動くはずです。
Eclipseは起動時にビルドパスで指定された外部のjarファイルに
classpathを設定して起動をかけてくれるのでEclipse上からだと動くのです。

この問題はわりと古くから知られていますが、クライアントアプリケーションとしての
javaがそれほど活用されていないこともあり、あまり話題に上がりませんね。
この問題に対する解決をP. Simon Tuffs氏が提唱しています。

http://www-06.ibm.com/jp/developerworks/java/041217/j_j-onejar.html
そのまま利用するではなくとも、参考にはなるでしょう。

また、お勧めが出来ない方法ではありますが、javaのextフォルダを利用する手法もあります。
実行用ランタイムのインストールフォルダ以下のlib/extというフォルダですが、
ここに置かれたjarファイルは該当JREが起動した際に自動的にclasspathが通されます。
ただし、これは非常手段だと思ってください。常用してはいけません。
sawat
大ベテラン
会議室デビュー日: 2006/08/02
投稿数: 112
投稿日時: 2007-06-29 11:30
Executableなjarファイルは、manifestファイルで実行時のclasspathを指定することができます。
コード:
Manifest-Version: 1.0
Sealed: true
Main-Class: foo.bar.Main
Class-Path: jdbc_driver.jar


のようなmainfestをjarファイルに含め、メインのjarファイルとJDBCドライバのjarファイルを一緒にZipなどで固めて配布すればよいと思います。
なお、Class-Pathは実行するjarファイルからの相対パスで記述します。(jarファイル内のパスではありません。)

# もちろんJDBCドライバが再配布可能なライセンスであることが前提ですが
未記入
会議室デビュー日: 2007/06/29
投稿数: 2
投稿日時: 2007-06-29 12:46
インギさん
カーニーさん
Nagiseさん
sawatさん
返答、どうもありがとうございました。

JAVAを勉強し始めて1週間くらいなので、マニフェストファイルの存在は
入門書には書いてあったのですが、どんな物かまでは知りませんでした。

また、ONE−JARの考え方もとても共感が出来、むずかしそうですがチャレンジ
したいものです。

まずはJDBCドライバが再配布可能かどうかから調べてみたいと思います。
 
どうもみなさん ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)