我可以将外部工具打包到我的程序中吗?



我依靠对7z (LGPL)的shell调用来完成我正在进行的项目的一个重要部分:具体来说,打开.cbr文件。我遇到的问题是,不能保证我能够在用户的计算机上找到它(假设它甚至在他们的计算机上)。

是否有办法将其二进制文件保存在我的编译工具中,所以我不必担心在外部调用它们?(我的印象是这就是jar文件的作用,但我不确定。)

或者如果这是不可能的,那么标准的方法是什么?

通常来说,这是您希望获得库依赖项来处理文件解压缩的地方。有些人使用Apache Commons Compress,这将需要在您的sbt构建定义中使用此库依赖项:

libraryDependencies += "org.apache.commons" % "commons-compress" % "1.5"  // Or whatever version you need

或者,您可以将exe文件包含在resources文件中,该文件将包含在构建中—假设可执行文件不需要在系统级别安装。这非常简单,只需创建src/main/resources目录并将文件放入其中即可。但是,您的jar 只能在兼容的系统架构上工作,所以在选择这条路线之前要三思。除非有特殊原因需要使用7-zip解压缩文件,否则最好使用Java或scala兼容的库,避免调用shell。

最新更新