Java 导出为可运行jar,但带有可编辑属性文件?

Java 导出为可运行jar,但带有可编辑属性文件?,java,eclipse,Java,Eclipse,我有一个客户端项目的属性文件。我想将客户机导出为可运行的jar,但是属性文件不应该集成到这个jar中。因为我当然想对它进行编辑,而不必重新编译jar客户机文件 如何使用eclipse以这种方式导出它?我目前没有使用Java,但我曾经使用eclipse导出一个可运行的JAR。我使用存储设置,并在Jar文件的周围文件夹中自动生成该文件。我不知道这是否对您有帮助,但这可能是一个开始….您必须将它们放在项目工作区中,使其位于jar中(但情况并非如此,因为您不希望这样),或者从预定义的目录加载它们,例如,

我有一个客户端项目的属性文件。我想将客户机导出为可运行的jar,但是属性文件不应该集成到这个jar中。因为我当然想对它进行编辑,而不必重新编译jar客户机文件


如何使用eclipse以这种方式导出它?

我目前没有使用Java,但我曾经使用eclipse导出一个可运行的JAR。我使用存储设置,并在Jar文件的周围文件夹中自动生成该文件。我不知道这是否对您有帮助,但这可能是一个开始….

您必须将它们放在项目工作区中,使其位于jar中(但情况并非如此,因为您不希望这样),或者从预定义的目录加载它们,例如,您可以要求属性文件始终与可运行jar文件位于同一目录中

顺便说一下,如果将属性文件放在jar中,则不必重新编译项目。jar文件只是一个包,您可以将其解压缩,对属性文件进行编辑,然后重新打包。它会按照你的要求工作


如果您改变主意,请参阅文章。

如果您希望属性文件与JAR文件位于同一目录中,只需在Ant构建中添加一个额外步骤来压缩属性文件和JAR文件


如果没有,请让Java代码在Java应用程序第一次运行时创建所需的属性文件。

使用标准Eclipse的导出为可运行JAR(右键单击项目->导出->可运行JAR文件->另存为ANT脚本)似乎不可能做到这一点。但是,Eclipse允许您将导出的定义存储为Ant文件,稍后可以修改该文件

修改可以如下所示(我用注释标记了修改的部分;应该很容易与Eclipse生成的脚本进行比较)


“因为我当然希望对其进行编辑,而不必重新编译jar客户机文件。”重建jar只需几分钟(如有必要,还需要签名)。如果用户需要编辑属性,那是另一回事。是的,稍后用户应该对文件进行编辑。对不起,这是我的错。请参阅“Java程序如何使用.jar中的文件进行读写?”
<target name="create_run_jar">
    <jar destfile="/mytargetlib/myjar.jar">
        <manifest>
            <attribute name="Main-Class" value="Main"/>
              <!-- Here we only add lib/properties, the rest should be pre-generated by Eclipse -->
            <attribute name="Class-Path" value=". lib/myjar1.jar lib/myjar2.jar lib/properties"/>
        </manifest>
        <fileset dir="/bin" excludes="**/*.properties" /> 
    </jar>
    <delete dir="/mytargetdir/lib"/>
    <mkdir dir="/mytargetdir/lib"/>       
    <copy file="myjar.jar" todir="/mytargetdir/lib"/>
    <copy file="/myprojectdir/lib/myjar1.jar" todir="/mytargetdir/lib"/>
    <copy file="/myprojectdir/lib/myjar2.jar" todir="/mytargetdir/lib"/>
      <!-- Again, all the above was generated by Eclipse. We only add a copy of our property file --> 
        <mkdir dir="/mytargetdir/lib/properties"/>
        <copy file="/myprojectdir/properties/mypropertyfile.properties" todir="/mytargetdir/lib/properties"/>
      <!-- end of our addition --> 
</target>