我想使用Amazon Lambda来运行组件。但是,此组件与某些软件包具有依赖关系,这些软件包似乎仅在Oracle的SDK中可用。
我已经读过AWS Lambda函数在Linux Amazon AMI上运行(基于Open SDK)。实际上,前段时间我试图在EC2实例上运行我的项目并面临同样的问题,所以我切换到标准的Ubuntu 14.04并安装了Oracle Java 8 SDK。
你有什么想法吗?
编辑:我发现的问题是:
[2016-11-21T23:58:02.100] java.lang.NoClassDefFoundError: com/sun/webkit/network/CookieManager
[2016-11-21T23:58:02.100] java.lang.NoClassDefFoundError: com/sun/webkit/network/CookieManager
[2016-11-21T23:58:02.100] at com.machinepublishers.jbrowserdriver.JBrowserDriverServer.main(JBrowserDriverServer.java:74)
我认为该类仅在Oracle的Java SDK中可用。
答案 0 :(得分:2)
如果您选中Lambda Execution Environment and Available Libraries,那么您将获得
如果您在代码中使用任何本机二进制文件,请确保它们是 在这种环境下编译。请注意,只有64位二进制文件 AWS Lambda支持。
AWS Lambda支持以下运行时版本:
- Node.js - v0.10.36,v4.3.2(推荐)
- Java - Java 8
- Python - Python 2.7
醇>
问:Lambda用于执行我的函数的JVM环境是什么?
Ans:Lambda提供了openjdk 1.8的Amazon Linux版本。
问:如何编译AWS Lambda函数Java代码?
您可以使用Maven或Gradle等标准工具来编译Lambda 功能。您的构建过程应该模仿您的构建过程 将用于编译依赖于AWS SDK的任何Java代码。 [R的未 您的源文件上的Java编译器工具,并包含AWS SDK 1.9或更高版本,对类路径具有传递依赖性。有关详细信息,请参阅aws documentation。
您还可以查看:AWS Lambda: How It Works
如果您查看github for jbrowserdriver,则会提供先决条件
使用JavaFX的Java 8:
Ubuntu Xenial 16.04 LTS,Debian 8 Jessie(Backports),Debian 9 拉伸:
sudo apt-get install openjdk-8-jre openjfx
Ubuntu Trusty 14.04 LTS:
sudo add-apt-repository ppa:webupd8team/java && sudo apt-get update && sudo apt-get install oracle-java8-installer libgtk2.0 libxtst6 libxslt1.1 fonts-freefont-ttf libasound2 && sudo update-alternatives --config java
Mac,Windows,Linux:
install Oracle Java 8(注意:选择JRE或JDK但不选择“Server JRE”,因为它不包含JavaFX )