当前位置: 首页 > 面试题库 >

如何将图像捆绑在jar文件中

闻人博
2023-03-14
问题内容

我做了一个Java应用程序。并将所有类捆绑在jar文件中。.我从netbeans运行项目,我的应用程序运行成功..但是我将我的.jar文件放在另一个地方,然后从那里运行..我没有我的应用程序使用的图标..在代码中,我从项目文件夹中存在的images目录中获取我的图标。

现在,我想知道如何将这些图像文件呈现给最终用户(就像我们呈现.jar文件一样)。


问题答案:

似乎这里有两个问题:

  1. 在构建项目时,如何使NetBeans在生成的jar中包含图像文件?

  2. 如何从罐子访问图像文件?

此答案适用于NetBeans 6.8并解决了两个子问题。

假设您有一个基于蚂蚁的Java应用程序项目。

这是项目的“文件”视图

JP
+ images
  + test.jpg
+ nbproject
+ src
  + jp
    + Main.java
+ test
+ build.xml
+ manifest.mf

在Main.java中,您具有以下代码:

public static void main(String[] args) throws IOException {
    // find the file in the file system.. probably not a good idea
    File f = new File("images/test.jpg");
    System.out.println(f.getCanonicalPath()+" "+f.exists());

当您从NB内部运行此项目时,将得到以下输出:

/export/home/vkraemer/NetBeansProjects/JavaApplication2/images/test.jpg true

当运行打包到jar中的代码时,您将得到如下内容:

bash-3.2$ pwd
/export/home/vkraemer/nbhg/web-main
bash-3.2$ java -jar /export/home/vkraemer/NetBeansProjects/JavaApplication2/dist/JavaApplication2.jar
/export/home/vkraemer/nbhg/web-main/images/test.txt false

为了在执行jar时获得更好的效果,您需要执行以下操作:

将images目录添加为您的项目的源根目录

右键单击该项目,然后选择“属性”项。将出现一个对话框。

在对话框左侧的列表中选择“源”。这将更改对话框右侧面板的内容。

按下“源软件包文件夹”表旁边的“添加文件夹…”按钮。将会出现一个FileChooser。

使用此选择器选择图像文件夹,然后按确定按钮。images文件夹的条目将添加到表中。

使用“项目属性”对话框上的“确定”按钮来接受更改并关闭该对话框。

更改您的代码以使用
Class.getResource()

public static void main(String[] args) throws IOException {
    // find the file in the file system.. probably not a good idea
    File f = new File("images/test.jpg");
    System.out.println(f.getCanonicalPath()+" "+f.exists());
    URL url = Main.class.getResource("/test.jpg");
    System.out.println(url);

当您从IDE内部运行项目时,应该看到类似以下内容的内容:

/export/home/vkraemer/NetBeansProjects/JavaApplication2/images/test.jpg true
file:/export/home/vkraemer/NetBeansProjects/JavaApplication2/images/test.jpg

当运行打包到jar中的代码时,您将得到如下内容:

bash-3.2$ pwd
/export/home/vkraemer/nbhg/web-main
bash-3.2$ java -jar /export/home/vkraemer/NetBeansProjects/JavaApplication2/dist/JavaApplication2.jar
/export/home/vkraemer/nbhg/web-main/images/test.jpg false
jar:file:/export/home/vkraemer/NetBeansProjects/JavaApplication2/dist/JavaApplication2.jar!/test.jpg

获取test.jpg文件的URL后,可以使用ImageIcon(URL)创建图标



 类似资料:
  • 好的,我在分发我的邮件时遇到了一些问题。jar文件。当我只是从NetBeans运行程序时,它可以工作,但是如果我尝试从dist文件夹运行它,它就不工作(没有图像被加载)。 以下是我的程序的层次结构: src/img/随机图像 src/myapp/源文件 我用这个函数加载图像: 在那之后: 在我构建我的项目之后,这些图像在jar文件中,但是它们没有被加载。你知道为什么吗?

  • 我创建了一个Java应用程序,它使用运行库执行Python脚本。我想知道是否有一种方法可以将Python.exe和必需的库包含在Jar文件中?

  • 我从。jar文件创建了。exe文件。现在我的客户机要求运行应用程序而不在系统中安装jre。我听说使用捆绑的jre是可能的...但我不知道如何将jre与。exe文件捆绑...

  • 目前,我在启动我的程序时使用JVM参数来查找JavaFX库,如下所示: 我的POM。xml的插件部分非常简单。除了Docker和Launch4j插件之外,我只有: 有没有办法告诉Maven将整个lib目录(其中包含JavaFX库和aspectJ/Spring仪器java代理)捆绑在jar中?这样做可以解决在我部署应用程序的任何地方都必须携带该lib文件夹的问题!谢谢! ******编辑******

  • 我制作了一个javafx应用程序表单,我得到了一个可执行的jar作为输出。现在,我的javafx应用程序依赖于两个第三方JAR,比如commons。伊奥。2.4.罐子 目前,为了运行我的应用程序,我必须像这样将这些依赖jar保存在可执行jar的类路径中 但我希望所有依赖的jar都捆绑在我的可执行jar中。 因为javafx使用ant构建,所以我尝试使用 但是在捆绑了所有依赖的jar之后,我没有得到

  • 下面的代码在从我的编辑器运行时可以工作,但是当用eclipse编译成可运行的jar文件时,图像无法加载。 有人能建议我如何修改我的代码或编辑器,以便在编译时加载文件吗。 我读过其他访问文件的方法,但因为我需要从文件夹中随机选择,所以我需要使用类。