我正嘗試從使用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-> Argument並添加參數-Xmx4g
...它沒有幫助。我試過將它設置爲一個變量,名稱爲-Xmx4g
,也沒有幫助。
好吧,這些聽起來都不是特別美學......但我想我會去#2 – WhiteTiger
我認爲這是最好的路徑,如果你能負擔得起調查和維護的時間。我們使用WinRun4j將自己的Windows產品包裝在自動構建中,並且非常滿意。儘管如此,花費一些時間來弄清楚配置和各個角落。 –