У меня есть следующая структура каталогов для моего личного проекта:
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.png
находится в res/img/new_game.png
Я знаю, если я делаю:
$java -jar build/jar/minesweeper-clone.jar
, это работает отлично, и значки отображаются, но я хочу выполнить только файл JAR в Windows (без всего каталога моего проекта).
Спасибо.
РЕДАКТИРОВАТЬ
Способ доступа к ресурсам:
JMenuItem newGameItem1 = new JMenuItem("New game", new ImageIcon(NEW_GAME_ICON));