当前位置: 首页 > 知识库问答 >
问题:

Java getResource未在中工作。jar文件

富涛
2023-03-14

我正在尝试将我从eclipse制作的pacman游戏导出到。罐子包装。问题是,尽管eclipse上的一切都运行良好,但当。jar已导出,我使用的资源无法正确加载。我将它们放在一个单独的/res文件夹中,该文件夹位于构建路径上。我通过以下方式访问它们:

ClassLoader classLoader = getClass().getClassLoader();
    try{
         image = ImageIO.read(new File(classLoader.getResource("images/PM0.gif").getFile()));
    }
    catch (IOException e1) {
        e1.printStackTrace();

    }

File file=new File(类Loader.get资源("级别/"fileName). getFile());

我做错了什么?这里是我得到的错误的一个例子(只有在eclipse上导出的. jar中运行良好)

共有2个答案

上官鸿朗
2023-03-14

为了检索放置在jar中的资源,您需要使用getResourceAsStream()

它在eclipse上工作,因为运行时环境是使用实际文件使用“未打包”JAR执行的(或者更好的是放置预打包)。

方轩昂
2023-03-14

在使用资源时,您应该始终将它们作为流而不是文件(除非您试图做一些非常奇怪的事情)。

请尝试以下操作:

ImageIO.read(classLoader.getResourceAsStream("images/PM0.gif"))
 类似资料:
  • 我用java做了一个经典的Hello world程序,叫做Hello.java: 我编译了它: 然后我制作了一个名为manifest的清单。txt: 然后我说,它确实创建了一个jar文件 ,但当我创建了它说没有主清单属性。提前谢谢。

  • 我已经寻找了一段时间来解决这个问题。我的工作区中有一个项目文件夹(该文件夹基本上是我的根目录),其中有一个名为icon的文件。gif。在我的项目中,我有以下几点: 当我运行图标时,它在eclipse中运行良好,但导出的jar文件并不像在eclipse中那样显示图标。知道为什么吗?我想弄明白这件事快疯了。

  • 我试图在linux中从systemd服务启动一个jar。我正在执行的jar假设在当前目录中有一个xml文件。我正在传递该文件的名称,并带有-config参数。我创建的示例服务如下: <代码>[单元]描述=我的服务后=网络。目标 上面的服务文件位于/usr/lib/systemd/system目录中,称为myservice。服务我正在执行以下命令来启动它: systemctl守护程序重新加载syst

  • 当我在Eclipse中运行它时,它会显示图片,但当我将其导出到.jar文件时,它只是显示一个空白窗口。

  • Android Studio是完美的工作,但当我执行jar文件 但jar文件在这种情况下无法执行,这是出了什么问题。有什么建议吗

  • 我是Java和堆栈溢出的新手,我在IntelliJ中创建了一个Java项目,并通过构建工件和构建。jar文件创建了一个。jar文件,以便在不使用IntelliJ的情况下运行该项目。该程序使用一个机器人来打开运行窗口,通过按Windows和R键,移动鼠标到我的计算机的分辨率(1366 x 768)的盒子内部,单击,键入cmd并按回车,移动鼠标到cmd窗口内部,单击,键入whoami并按回车。这在In