2014年3月26日水曜日

2014年3月19日水曜日

Jarファイルを作るときの注意(MANIFEST.MF)

Mainクラスの指定や、クラスパスの指定をしないと、Jarを配布しても、クラスが見つからない、とかExceptionがでる。
その辺りを解決するために参照したHPのメモ。

https://sites.google.com/a/orz-he.com/bibouroku/javano-ji-ben-denakoto/shi-xing-ke-nengjarwo-zuoru-fang-fa

http://www.tohoho-web.com/java/other.htm

http://archi.iza.ne.jp/blog/entry/108749/

バッチファイルとWinRARを連携して、Jarを生成する

バッチファイルを使用して、Jarファイル内のMANIFESTファイルを書き換える(予め用意していたものに上書きする)やり方。

set BATDIR=%~dp0
set JAR_NAME=XXX.jar
set ZIP_NAME=XXX-verXXX.zip
set ARCHIVER="C:\Program Files\WinRAR\WinRAR.exe"
mkdir %BATDIR%temp
%ARCHIVER% x %BATDIR%%JAR_NAME% %BATDIR%temp
rd /s /q %BATDIR%temp\META-INF
mkdir %BATDIR%temp\META-INF
xcopy %BATDIR%original\META-INF %BATDIR%temp\META-INF
cd %BATDIR%temp
rd /s /q %BATDIR%jar
mkdir %BATDIR%jar
%ARCHIVER% a -r -afzip %BATDIR%jar\%JAR_NAME% *
xcopy %BATDIR%original %BATDIR%jar
mkdir %BATDIR%jar\lib
xcopy %BATDIR%original\lib %BATDIR%jar\lib
cd %BATDIR%jar
%ARCHIVER% a -r %BATDIR%%ZIP_NAME% *
pause

2014年3月17日月曜日

JAR生成時の外部ファイル参照

Eclipse上で実行する場合のクラスパスと、他の環境にJARとして持って行って実行する場合のクラスパスは、当たり前だが異なる。
この問題を解決する方法。

JAR化したいプロジェクト上で右クリック>Exportを選択して、以下のJava>JAR fileを選択


JAR fileの出力場所を指定する。

途中の設定。(何もいじらない。)


外部Jarを参照する場合、META-INFフォルダの生成と、MANIFEST.MFファイルを生成する必要があるが、以下の指定だと正しく生成されなかったので、後で、できあがったJarファイルの中身を直接いじる。(※1)



※1
WorkingDirectoryが以下の場合のMANIFESTファイルのサンプルを書く。
もちろん、libファイルもJar化する時に、一緒にExportしてください。

[WorkingDirectory]/lib/XXX.jar

MANIFESTファイルのサンプル
Manifest-Version: 1.0
Main-Class: test.Test
Class-Path: . lib\XXX.jar

Class-Pathを指定することで、外部ファイルを参照させている。
また、Class-Pathの最初の要素に"."を入れることで、WorkingDirectoryも相対パスに設定している。
(が、正しく動いているかは未確認。)