2016-12-07 2 views
0

Xcode 3.1.4を使用して構築しているjava .jar実行可能ファイルから大きなPNG画像をエクスポートしようとしています。画像が非常に大きいので、私が手XcodeでコンパイルされたJava実行ファイルで大きなPNG画像をエクスポートする

filename = "myImage.png"; 

bImg = new BufferedImage(7882, 7882, BufferedImage.TYPE_INT_RGB); 
Graphics2D cg = bImg.createGraphics(); 

this.repaint(0,0,7882, 7882); 
this.paint(cg); 
cg.dispose(); 


ImageIO.write(bImg, "png", new File(filename))l 

Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space 
at java.awt.image.DataBufferInt.<init>(DataBufferInt.java:41) 
at java.awt.image.Raster.createPackedRaster(Raster.java:458) 
at java.awt.image.DirectColorModel.createCompatibleWritableRaster(DirectColorModel.java:1015) 
at java.awt.image.BufferedImage.<init>(BufferedImage.java:315) 

私は例えば(-Xmxフラグを使用してヒープサイズを増やすことができます知っている

基本的なコードは次のようになります-Xmx4g)、このように.jarファイルを実行すると操作は成功します。

java -Xmx4g -jar myJar.jar 

しかし、人々が.jarファイルをダブルクリックして実行できるようにファイルを配布したいと思います。したがって、Xcodeプロジェクトで-Xmxフラグを指定する方法、または段階的にPNGイメージを書き込む方法が必要です。私はExecutables-> Javaベース> Info->引数に入ってみましたし、引数-Xmx4gを追加しました

...それは助けにはなりません。私も-Xmx4gという名前で変数として設定しようとしましたが、どちらも役に立ちません。

答えて

1

実行可能なJAR自体にJVM引数を指定する方法はありません。

あなたは回避するには、いくつかの方法があります:

1)希望引数

2でJavaを起動するjarファイルと一緒に船.CMDと.SHファイル)WinRun4jのようなパッケージャ/ラッパーを使用し、Launch4jので、 on

3)以前と同じように出荷瓶。 main()でJVM引数をチェックし、希望するメモリ引数で起動していない場合は、jarのパスを決定し、Runtime.execで希望のメモリ引数を持つ新しいjava jarプロセスを起動します。

+0

だけでなく、特に美的それらの音のどれも...しかし、私はあなたが調査し、それを維持するために、時間に余裕があれば、これが最善の道だと思う#2 – WhiteTiger

+0

で行きますねません。私たちはWinRun4jでWindows製品を自動ビルドしており、かなり満足しています。しかし、設定とすべてのコーナーを把握するのに時間がかかりました。 –

関連する問題