使用JAR

时间:2016-05-24 23:48:11

标签: java jvm aws-lambda

我有一个在JVM上运行的应用程序,以胖罐的形式提供。它需要调用本机Linux二进制文件,例如ffmpeg。 Zip文件需要包含哪些目录结构才能将jar和可执行文件打包在一起?我找不到文档,只是使用我没有使用的构建工具的代码示例。

让我们假装我的lambda的名字是blah。我希望得到一个答案:

Deployable jar contains:
  + blah/  # contains fat jar
  + lib/  # contains ffmpeg

这是我写的一个不起作用的bash脚本。它只是将胖jar和本机可执行文件放在dist/目录中,然后将它们压缩在一起。

FATJAR=blah-assembly-0.0.4.jar
mkdir -p dist/
rm -f dist/*
rm -f $DEPLOYED_ZIP
cp $FATJAR dist/
cp /usr/local/bin/ffmpeg dist/
(cd dist && zip -r $FATJAR ffmpeg && mv $FATJAR ../$DEPLOYED_ZIP)

1 个答案:

答案 0 :(得分:0)

只要包中包含的本机二进制文件出现在PATH中或通过其完整路径调用,zip文件的任何结构都将起作用。在这两种情况下,这意味着您必须通过以下方式之一更新Java代码:

  1. 修改PATH环境变量或
  2. 以完整路径调用二进制文件。
  3. 在撰写本文时,可以从LAMBDA_TASK_ROOT环境变量中读取在AWS Lambda系统上提取包内容的目录的路径。