0

我正在开发一款游戏,并打算创建一个 jar 文件以向我的一些朋友发送测试版,以便我知道游戏在不同分辨率下的外观以及它如何在更差和更好的计算机上运行。问题是当我运行 jar 文件时,它会完全变黑,什么也不会发生。

我认为我为图像设置了错误的路径,因为如果我从 net beans 文件夹中删除所有图像,它看起来就像我启动 jar 时一样。我已经完成了图片的路径,只需写下它们的名字并将它们放在与类相同的文件夹中。

jar 文件如下所示: 两个文件夹,META-INF 和 Apocalypse。META-INF 内部是清单文件,它看起来像这样:

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.4
Created-By: 1.7.0_17-b02 (Oracle Corporation)
Class-Path: 
X-COMMENT: Main-Class will be added automatically by build
Main-Class: Apocalypse.Main

在 Apocalypse 文件中是所有类和所有图像,举个例子说明我如何在代码中获取图像我像这样得到它们ImageIcon ii = new ImageIcon("Image.png")我没有图像的任何路径但是如果这个代码不应该工作我的图像与课程在同一个文件夹中?图像的路径还会如何(如果问题是它们)?

4

1 回答 1

2

你说:

在 Apocalypse 文件中是所有的类和所有的图像

但是您粘贴的示例代码是:

ImageIcon ii = new ImageIcon("Image.png")

它尝试从本地计算机上的文件加载。因此,它依赖于环境,不适合通用部署。

这不是你应该做的。您应该将这些图像包含在 jar 文件中,并使用ImageIcon 构造函数使用 aURL作为参数来加载它们。

现在,为了在类路径中获取图像的 URL(包括 jar 查找),请参阅Class#getResouce()

典型的使用场景:在你的 jar 中创建一个实用程序类,例如:

public final class MyImageLoader
{
    // Utility class: no instantiation
    private MyImageLoader() {}

    public static ImageIcon getImage(final String resourcePath)
    {
        final URL url = MyImageLoader.class.getResource(resourcePath);
        return new ImageIcon(url);
    }
}

然后使用:

final ImageIcon i1 = MyImageLoader.getImage("/path/to/image.png");
于 2013-06-03T19:13:00.453 回答