我依靠对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。