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

构建jar文件时排除图像的Java

羊舌琛
2023-03-14

我用NetBeans中的GUI做了一个项目。GUI有一个名为GIFL2的标签,当按下按钮时,它会通过

GIFL2.setText("");
GIFL2.setIcon(new ImageIcon("src/torrehanoirecursion/" + path));

问题是,当我构建项目并打开jar文件时,图像不会加载。我最初认为这是因为图像在img文件夹中,而img文件夹又在SRC中。因此,文件夹的相对路径是src/torrehanoirecursion/img

但是,我将所有的映像移到src本身,没有文件夹,因为我读到java可能会因为它们不是src的一部分而将它们排除在外,但它仍然不起作用。没有错误或任何东西,它只是不将它们加载到jar中。

我去了项目>属性>打包。选中“复制相关库”,选中“编译时构建jar”,不选中“压缩jar”,“从jar中排除”完全为空。

你知道可能会发生什么吗?

共有1个答案

邢璞
2023-03-14

如果使用Maven,应该将目标jar中希望包含的所有资源放在项目的src/main/resources目录下:

pom.xml
src/main/java
src/main/java/resources
src/main/java/resources/img1

您还可以在不同的目录下包含文件,例如src/other-resources。在pom.xml的这种情况下,您应该在build部分下设置这些路径,如下所示:

<build>
    <resources>
        <resource>
            <directory>src/other-resources</directory>
        </resource>
    </resources>
</build>

有关详细信息,请参阅Maven resources插件文档:https://Maven.apache.org/plugins/maven-resources-plugin/examples/resource-directory.html

正如您所指定的,您的项目不是用Maven管理的,我报告了允许您用NetBeans解决的步骤。

  1. 在项目的根路径上创建resources目录
  2. 在Netbeans IDE上打开项目属性,然后选择sourceson categories部分
  3. 在源包文件夹部分添加资源文件夹

然后,目标jar应该包含类路径上resources目录下的所有文件。

更新:在目标jar上手动注入资源

最后,您还可以在构建后使用以下命令将整个src/main/java/resources目录手动注入到目标jar中(您至少应该使用bash脚本或Netbeans上的特定任务来自动化此操作):

cd src/main/java/
jar uf project.jar resources
 类似资料:
  • 我有一个java源文件位于src/com/form/myClass 我在同一个文件夹中还有一个javascript文件。 我的项目读取js文件的内容,并在测试中成功完成,即在IDE中运行文件。 但是当我构建并运行我的jar时,好像javascript不再包含在内,我必须特别包含非java文件吗?文件的位置在构建时会移动还是变得相对。 唯一排除的选项是“***.java,***.form” 我正在运

  • 我正在尝试创建一个Jar用作Maven存储库 我已经构建了所有内容,所有类都准备好了。唯一的问题是gradlew./build包含了测试文件夹中的类和资源。我不希望这些作为jar的一部分,尤其是正在测试的资源文件。 因此,我的问题是,如何从jar构建任务中排除这些文件。我试过了 在我的身体里。格拉德尔:但那没用 我是Gradle和Maven的新手,所以任何洞察力都会有帮助。谢谢! 参考材料 bui

  • HTSJDK是一个用于访问常见文件格式(如SAM和VCF)的库。我想构建HTSJDK JAR。在文档页面中说我必须为此使用Ant。所以我安装了Ant并运行以下命令: ant htsjdk-jar [javac]用法:javac [javac]use-help获取可能选项列表 生成失败 build.xml文件有问题。这里是文件的开头: 拜托,有人能告诉我该怎么做才能解决这个问题吗?

  • 我正试图在netbeans中构建java derby项目的jar文件,但是我面临着这个错误。 Ant-f c:\users\kamal\documents\netbeansprojects\javaapplication3-dnb.internal.action.name=rebuild clean jar init:deps-clean:更新属性文件:c:\users\kamal\documen

  • 我正在开发一个带有多个docker容器的微服务。使用docker-compose可以创建我想要的图像,但也可以创建其他几个图像副本,这些副本会填满我的磁盘空间。这其他子图像有什么用,我可以阻止他们被创建,因为他们正在消耗我的内存。请注意,它们并不是真正的“悬空”,它们只是出现在构建中。

  • 由于Flutter web还不支持lib,并且有大量的包依赖于。