3

JavaFX アプリケーションで使用する Java リソースにアクセスしています。

URL resource = getClass().getClassLoader().getResource("/image.jpg");
File file = new File(resource.getFile());
if (!file.exists()) {
    throw new FileNotFoundException("No image: " + file)
}

Java アプリケーションとして実行すると、すべてが正常に機能し、リソースが検出されます。

ただし、現在、zenjava の Maven プラグインを使用して、JavaFX アプリケーションをネイティブ Mac アプリにバンドルしています。

<plugin>
    <groupId>com.zenjava</groupId>
    <artifactId>javafx-maven-plugin</artifactId>
    <version>2.0</version>
    <configuration>
        <mainClass>
            com.seaniscool.foobar.FooBar
        </mainClass>
    </configuration>
</plugin>

以下を使用してネイティブプラグインでビルドします。

mvn clean jfx:native

ここで、Mac ファイルを実行してアプリケーションを実行すると.app、このリソースをファイルに解決できなくなります。getResource次の URL を返します。

jar:file:/Projects/foobar/target/foobar.app/Contents/Java/foobar-jfx.jar!/image.jpg

Fileただし、パスとして使用すると見つかりません。

4

2 に答える 2