【问题标题】:Creating a .jar file for a program [duplicate]为程序创建 .jar 文件 [重复]
【发布时间】:2013-05-30 00:45:06
【问题描述】:

我正在开发一款游戏,并打算为其创建一个 jar 文件,以便将测试版发送给我的一些朋友,以便我了解游戏在不同分辨率下的外观以及它在更差和更好的情况下的运行情况电脑。问题是当我运行 jar 文件时,它会完全变黑,什么也不会发生。

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

jar 文件如下所示: 两个文件夹,META-INF 和 Apocalypse。 META-INF里面是manifest文件,长这样:

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") 我没有图像的任何路径,但应该如果我将图像与类放在同一文件夹中,此代码是否有效?否则如何处理图像的路径(如果问题是它们)?

【问题讨论】:

  • 我会先在谷歌上搜索“将图像添加到 jar 文件”,然后是您正在使用的 IDE 的名称。然后我会选择你在结果中看到的这个网站上的十几个链接中的一个......这个问题每天都会被问到。

标签: java file jar path manifest


【解决方案1】:

你说:

Apocalypse 文件里面是所有的类和所有的图像

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

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

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

这不是你应该做的。您应该在 jar 文件中包含这些图像并使用the ImageIcon constructor using a URL as a parameter 加载它们。

现在,为了在类路径中获取图像的 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");

【讨论】:

  • 这可行,但我也有保存文件,因为我使用 File 类来创建这些保存文件,所以我不能使用 URL,那么我该如何让它在这种情况下工作?
  • 对于保存文件,您必须采取保存在System.getProperty("user.home") 后面某处的方法。然而,似乎有一个问题:见here。但是,在您甚至无法确定的情况下,我认为中止游戏并警告用户“抱歉,我无法确定保存文件的位置”是一种明智的做法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-12
  • 2015-02-18
  • 2013-04-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多