2012-03-19 4 views
0

私はJPA、hibernate、Java自体の初心者です。 私は何とか自分のコードをDBから値にアクセスさせるようにしました。JPA/hibernateに設定ファイルを探す場所を知らせるJavaコードの書き方は?

jarファイルの最終的なjarファイルを抽出すると、そこにpersistence.xmlを持つMETA-INFディレクトリがあります。

hibernate.propertiesとhibernate.cfg.xmlも私のjarファイル内にあります。 実行時にすべてがjarファイル内にあるので、これらのファイルを変更することはできません。

jarの外部にpersistence.xml、hibernate.cfg.xml、hibernate.propertiesを移動し、それらをデプロイメント環境のどこかに配置したいと考えています。私はこれを行うことができますが、これらのファイルを探す場所を休止状態にするJavaコードの記述方法はわかりません。

など。 log4jについては、PropertyConfigurator.configure( "/ opt/somepath/log4j.properties")を使用して、log4j.propertiesファイルが存在するlog4jに伝えることができます。

誰でも私を助けて、JPAの設定を読み込み、実行時に休止することを学ぶことができるリンクを教えてください。

実行時に別のDBを参照し、jarファイルを変更せずにテストしたいと考えています。

答えて

1

/設定ファイルを探しているクラスパスをスキャンします。常にクラスパスのディレクトリ/ディレクトリに追加することができます。 $ {MY_DIR1}にMETA-INF directoryを入れ

MY_DIR1 = path/to/my/dir1 
    My_DIR2 = /path/to/my/dir2 
java -cp ${CLASSPATH}:${MY_DIR1}:${MY_DIR2} ... 

(または/および$ {MY_DIR2})次のように私は私の問題を解決しajozwik回答の助けを借りて

+0

感謝を使用して、それを開始しました。私はこのjava -cp $ {CLASSPAH}のように試しました:./ path/to/my/dir -jar Myjar.jar Web上のいくつかのリンクでは、cpを-jarと一緒に使うことはできません。このための任意の解決策。私はmvnのクリーンインストールとmvnのアセンブリを使用しています:シングル私のプロジェクトMyjar.jarを構築するjarファイルのjarファイルです。 -cpオプションを使用すると、コマンドラインからjarを起動する方法は? – Ameliorator

+0

You''このオプションを使用すると、JARファイルはすべてのユーザークラスのソースになり、他のユーザークラスのパス設定は無視されます.'したがって、jarファイルを展開します。 –

1

- >

  1. 初出/ path/to/mydirディレクトリに移動します。
  2. hibernate.propertiesとhibernate.cfg.xmlをmydirに移動しました。実行ファイルを起動中にクラスパスにMYDIRを追加しました

    ディレクトリ構造 - >

    mydirの

    META-INF 
    
         persistence.xml 
    
        hibernate.properties 
    
        hibernate.cfg.xml 
    
  3. 代わりの

    java -jar Myjar.jar 
    

    を使用して実行可能ファイルを起動する私はあなたの答えのための

    java -cp Myjar.jar:/path/to/mydir MyMainClass 
    
関連する問題