1

我想创建一个模型 jar 文件但不包含源代码。是否可以?Repast 模型安装程序默认包含源代码,但我想对模型的接收者隐藏它。

4

1 回答 1

2

是的,这是可能的,但有一个重要的警告。以二进制文件形式分发的已编译 Java 代码(如 jars)可以很容易地反编译回原始源代码,并且非常准确。如果您的目标是保护专有源代码,则需要对代码进行混淆 - 请参阅https://www.excelsior-usa.com/articles/java-obfuscators.html了解更多详细信息。不幸的是,代码混淆是一个相当复杂的主题。

有两种方法可以从 Repast 模型安装程序中省略项目源代码:

方法 1 – 从模型安装程序配置文件中删除 /src 元素。这将指示模型安装程序忽略安装程序 jar 中的 /src 文件。编译的代理类将位于通常的项目 /bin 文件夹中。

在 /installer/installation_compnents.xml 文件中,大约第 156 行注释以下内容:

<!-- 
       <pack name="Sources" required="no">
             <description>The model source code</description>
             <file src="$StagingOptionalArea/src" targetdir="$INSTALL_PATH/Geography"/>
       </pack>
-->

“”表示被注释的代码块的开始和结束。接下来,在 /installer/installation_coordinator.xml 文件中,在第 62 行附近添加注释:

<!-- Copy optional files to a separate directory -->
       <copy todir="${StagingOptionalArea}" overwrite="true" failonerror="false">
              <fileset dir="." casesensitive="no">
<!--                 <include name="**/src/**" /> -->              
                     <include name="**/docs/**" />
              </fileset>
       </copy>

在这里,您只想注释复制 /src 文件夹而不是 /docs 文件夹的单行(尽管您可以根据需要)。现在只需像往常一样构建模型安装程序。

方法二– 将 /src 文件夹导出为 jar 文件。此方法不需要像第一种方法那样对默认安装程序文件进行任何更改。但是,它需要在将源代码导出到 JAR 文件后删除源代码,这意味着您需要处理项目的副本以保留源代码。要将模型代码导出到 JAR 文件,请右键单击 /src 文件夹并选择导出... -> Java -> JAR 文件。在导出对话框中,确保在“选择要导出的资源”框中选中 src 文件夹,然后指定 JAR 文件名和位置。在项目 /lib 文件夹中导出 jar 文件的最佳位置。大多数其他选项应保留为默认值。确保“导出 Java 源文件和资源”没有被选中,否则它会将源复制到 jar 文件中。生成 JAR 文件并验证它是否存在于 /lib 文件夹中后,然后删除 /src 文件夹的内容,而不是 /src 文件夹本身。这将永久删除模型源代码,因此如果您采用此方法,请再次处理该项目的副本。简单地重命名或删除 /src 文件夹将导致安装程序失败,因此此方法需要删除。最后,需要更新 .rs 文件夹中的 user_path.xml 文件以反映源代码位置的变化。更改该行以假设导出的模型 JAR 文件位于 /lib 文件夹中。所有模型代码现在都在您的项目/lib 文件夹中的单个 JAR 文件中。此时 /src 和 /bin 文件夹应该是空的。像往常一样构建模型安装程序。安装源代码的选项仍然会出现在安装程序中,

于 2017-08-24T21:19:54.670 回答