簡體   English   中英

Ant和jar目錄結構

[英]Ant and jar directory structure

我的個人項目有下一個目錄結構:

mines/
 build.xml
 build/
 build/classes/
 build/jar/
 src/minesweeper
 src/minesweeper/view/
 src/minesweeper/model/
 res/img/

而我的build.xml文件是:

<project>
<target name="clean">
    <delete dir="build"/>
</target>

<target name="compile">
    <mkdir dir="build/classes"/>
    <javac srcdir="src" destdir="build/classes"/>
</target>

<target name="jar">
    <mkdir dir="build/jar"/>
    <jar destfile="build/jar/minesweeper-clone.jar" basedir="build/classes">
        <manifest>
            <attribute name="Main-Class" value="minesweeper.Minesweeper"/>
        </manifest>
    </jar>
</target>

<target name="run">
    <java jar="build/jar/minesweeper-clone.jar" fork="true"/>
</target>

在Ubuntu中,我這樣做:

$ant compile jar run

一切都很好。 但是如果我這樣做:

$java -jar minesweeper.jar

程序運行,但不顯示圖標。

在我的src/minesweeper/view/GameFrame.java類中,我有:

private static final String NEW_GAME_ICON = "res/img/new_game.png";

new_game.pngres/img/new_game.png

我知道是否可以:

$java -jar build/jar/minesweeper-clone.jar 

它可以完美工作並顯示圖標,但是我只想在Windows中執行jar文件(而不是我的項目的整個目錄)。

謝謝。

編輯
我訪問資源的方式是:

JMenuItem newGameItem1 = new JMenuItem("New game", new ImageIcon(NEW_GAME_ICON));

您想要將資源包含在jar本身中,並使用以下API讀取文件:

getResourceAsStream

因此,首先您需要確保資源在jar中(打開並確保它在其中),其二確保您使用的是諸如此類的API調用,而不是File IO機制(因為映像將位於jar;不在文件系統上)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM