Вот моя текущая структура каталогов (содержится в каталоге connect4
):
├── pom.xml
├── src
│ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ └── dv
│ │ │ └── app
│ │ │ ├── App.java
│ │ │ ├── Board.java
│ │ │
| | |
│ │ │
│ │ └── resources
│ │ ├── red-chip.png
│ │
│ └── test
│ ...
|
└── target
├── classes/com/dv/app/*.class
По существу с Board.java
, я пытаюсь получить доступ к red-chip.png
.
Я попробовал много вариантов, чтобы это сработало, сейчас у меня просто есть:
ImageIcon redChip = new ImageIcon("red-chip.png");
Я пытался изменить путь для использования /resources
, использовал функцию getResource
, но ничего не получалось.
Когда я генерирую банку с помощью mvn package
и запускаю файл баночки, изображение не отображается.
Я выполняю unzip -l <jar file>
и вижу, что мой red-chip.png по какой-то причине перемещен в корневой каталог.
Length Date Time Name
--------- ---------- ----- ----
126 2019-05-30 20:03 META-INF/MANIFEST.MF
0 2019-05-30 20:03 META-INF/
0 2019-05-30 19:19 com/
0 2019-05-30 19:19 com/dv/
0 2019-05-30 19:20 com/dv/app/
0 2019-05-30 20:03 META-INF/maven/
0 2019-05-30 20:03 META-INF/maven/com.dv.app/
0 2019-05-30 20:03 META-INF/maven/com.dv.app/connect4/
4190 2019-05-30 19:20 com/dv/app/App.class
4975 2019-05-30 19:20 com/dv/app/Board.class
110 2019-05-29 20:29 META-INF/maven/com.dv.app/connect4/pom.properties
7856 2019-05-30 19:32 red-chip.png
Вот мой pom.xml
. Главное, на что стоит обратить внимание, это плагин build jar.
(удалены ненужные вещи, такие как artifactID и т. Д.)
<project xmlns="...">
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>com.dv.app.App</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
</project>
Итак, мои вопросы таковы:
Как правильно ссылаться на мой png-файл, чтобы он был виден в банке?
Почему файл png находился в корне в банке?