JavaアプリをMac OS Xの.appにする方法が解ったのでメモ.
結論から書くと,附属ツールの「Jar Bundler.app」を使えばよい.
ツールのインストール場所は以下のとおり.
$ open /usr/share/java/Tools/Jar\ Bundler.app
[Build Information]タブ
main classを選択する.アイコンの変更もここ.
[Classpath and Files]タブ
Classpathの設定を行う.アプリ起動に必要なライブラリはここで追加する.
なお,jarファイル内のMETA-INF/MANIFEST.MFにあるClass-pathは参照しないようなのでライブラリバンドルなjarは展開して,ここのClasspathに追加する.
[Properties]タブ
Heap memoryやvmオプションの指定はここ.
最後に[Create Application...]ボタンをクリックして,.appファイルを生成する.
以上でJavaアプリを.appとすることができる.
Launchpadにも登録できるはずだ.
最近javaの雲行きが怪しいことが気になるけど.
2013年5月3日金曜日
2011年12月17日土曜日
Apache POI:Not enough data (1) to read requested (2) bytes
Apache POIライブラリ(3.7)でxlsファイルを読み込んだら次のようなエラーが表示された.
気持ち悪いが,とりあえず動いたからよしとしよう.
Exception in thread "main" org.apache.poi.hssf.record.RecordFormatException: Unable to construct record instance原因がわからずなんともならなかったのでベータ版(3.8beta4)に切り替えたら,あっさりと動いた.
at org.apache.poi.hssf.record.RecordFactory$ReflectionConstructorRecordCreator.create(RecordFactory.java:65)
at org.apache.poi.hssf.record.RecordFactory.createSingleRecord(RecordFactory.java:300)
at org.apache.poi.hssf.record.RecordFactoryInputStream.readNextRecord(RecordFactoryInputStream.java:270)
at org.apache.poi.hssf.record.RecordFactoryInputStream.nextRecord(RecordFactoryInputStream.java:236)
at org.apache.poi.hssf.record.RecordFactory.createRecords(RecordFactory.java:442)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:263)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:188)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:305)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:286)
at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:60)
at org.sheepcloud.lab.Parser.<init>(Parser.java:26)
at org.sheepcloud.lab.Parser.main(Parser.java:53)
Caused by: org.apache.poi.hssf.record.RecordFormatException: Not enough data (1) to read requested (2) bytes
at org.apache.poi.hssf.record.RecordInputStream.checkRecordPosition(RecordInputStream.java:216)
at org.apache.poi.hssf.record.RecordInputStream.readUShort(RecordInputStream.java:267)
at org.apache.poi.hssf.record.common.UnicodeString$PhRun.<init>(UnicodeString.java:311)
at org.apache.poi.hssf.record.common.UnicodeString$PhRun.<init>(UnicodeString.java:297)
at org.apache.poi.hssf.record.common.UnicodeString$ExtRst.<init>(UnicodeString.java:178)
at org.apache.poi.hssf.record.common.UnicodeString.<init>(UnicodeString.java:438)
at org.apache.poi.hssf.record.SSTDeserializer.manufactureStrings(SSTDeserializer.java:55)
at org.apache.poi.hssf.record.SSTRecord.<init>(SSTRecord.java:250)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at org.apache.poi.hssf.record.RecordFactory$ReflectionConstructorRecordCreator.create(RecordFactory.java:57)
... 11 more
気持ち悪いが,とりあえず動いたからよしとしよう.
登録:
投稿 (Atom)


