Java 如果我想将我的资源打包到一个可运行的JAR中(不使用类加载器),我的选项是什么?

Java 如果我想将我的资源打包到一个可运行的JAR中(不使用类加载器),我的选项是什么?,java,eclipse,jar,classloader,executable,Java,Eclipse,Jar,Classloader,Executable,我想用图像和html文件为我的GUI程序创建一个可运行的jar。我将html和图像文件夹放在eclipse项目的根文件夹中。例如,我有一个eclipse项目,其子目录为bin、html、images、src和.settings 我听说Java的类加载器可以让我轻松地打包我的程序资源和源代码。但这意味着我必须将资源文件与类文件放在一起。我不习惯这样做,我更愿意按照目前的方式组织我的资源 我从未使用过Maven或Ant,我想知道是否可以用这些工具来完成 如果有的话,我有什么办法来解决这个问题呢?对于

我想用图像和html文件为我的GUI程序创建一个可运行的jar。我将html和图像文件夹放在eclipse项目的根文件夹中。例如,我有一个eclipse项目,其子目录为bin、html、images、src和.settings

我听说Java的类加载器可以让我轻松地打包我的程序资源和源代码。但这意味着我必须将资源文件与类文件放在一起。我不习惯这样做,我更愿意按照目前的方式组织我的资源

我从未使用过Maven或Ant,我想知道是否可以用这些工具来完成


如果有的话,我有什么办法来解决这个问题呢?

对于小配置文件,把它们放在$project\u dir/src/main/resources中,它们将被内置到最终的.jar文件中。例如,日志配置文件就是实现这一点的理想选择

如果您有大数据,比如图像,我可能会将它们与.jar分开,并将它们分发到jar旁边的“data”文件夹中


Ant/Maven是主要的Java构建工具。如果你有选择的话,Gradle可以说比那些更好、更容易。您可以制作一行Gradle脚本
apply plugin:'java'
并将.java源代码放在src/main/java中,将资源放在src/main/resources中,然后运行
Gradle jar
,这样应该可以工作。

为什么您会关心图像是否位于
src
文件夹下?这就是说,你一定要学会使用构建工具,是的,它们允许将图像存储在单独的目录中。不过,我不知道该怎么做。我遇到的一个障碍是分布在不同的系统中。我想创建一个无需安装的可执行jar。我想我可以把我的jar和资源放在同一个文件夹中。因此,我的障碍是如何处理我资源的相对路径,以便jar能够访问其资源(只要相对路径不变)。@poetryrocksalot:坦白地说,我不知道如果不将图像捆绑到jar中,除了复杂性之外,你会得到什么。如果不是这样,我不会把大文件放在.jar中。如果没有其他内容,因为每个构建都需要复制和压缩所有这些文件。@poetryrocksalot,只需使用相对路径进行访问,如“/data/images/image.png”。启动时,您的代码可能应该验证“/data”是否存在。您不需要安装步骤,但可能需要一个带有.jar和
数据
目录的目录。我决定只使用类加载器从bin目录加载所有资源。