在 ec2 上安装 playwright 依赖项以在 Java 中使用它

Posted

技术标签:

【中文标题】在 ec2 上安装 playwright 依赖项以在 Java 中使用它【英文标题】:Installing playwright dependencies on ec2 to use it in Java 【发布时间】:2021-12-23 19:36:06 【问题描述】:

我正在尝试使用 playwright 在我的 java 应用程序中生成 pdf。这是工作正常的语言环境,但是当使用 Beanstalk 在 ec2 上部署它时,我收到以下错误:

Nov 11 09:17:32 ip-172-xx-xx-2 web: 2021-11-11 09:17:32.927 ERROR 17681 --- [io-5000-exec-10] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is com.microsoft.playwright.PlaywrightException: Error 
Nov 11 09:17:32 ip-172-xx-xx-2 web: message='Host system is missing dependencies!
Nov 11 09:17:32 ip-172-xx-xx-2 web: Missing libraries are:
Nov 11 09:17:32 ip-172-xx-xx-2 web: libatk-1.0.so.0
Nov 11 09:17:32 ip-172-xx-xx-2 web: libatk-bridge-2.0.so.0
Nov 11 09:17:32 ip-172-xx-xx-2 web: libcups.so.2
Nov 11 09:17:32 ip-172-xx-xx-2 web: libxkbcommon.so.0
Nov 11 09:17:32 ip-172-xx-xx-2 web: libXcomposite.so.1
...

当然,错误消息非常简单。缺少依赖项! 我已经知道我可以通过 CLI 工具安装这些依赖项,但我不知道在哪里安装它以及如何通过 CodePipeline 与 CodeBuild 和 CodeDeploy 在我的构建过程中安装它。 这是您可以在这里找到的命令:https://playwright.dev/java/docs/cli/#install-system-dependencies

mvn exec:java -e -Dexec.mainClass=com.microsoft.playwright.CLI -Dexec.args="install-deps"

所以问题是:我在哪里以及如何在我的 CodePipeline 中安装 Playwright 依赖项以使用 beanstalk 在 ec2 上运行它?

提前致谢!

【问题讨论】:

嗯...如果您尝试从您的 ec2 实例运行 mvn install 会发生什么? 另外,您可以制作应用程序的 Docker 映像并在 Docker 引擎中的 EC2 上运行它 我认为使用mvn package maven 知道的所有必要依赖项都被打包到 jar 文件中 将整个 CD 流程更改为 docker 并远离 beanstalk 已提上日程,但还有一点路要走 看我的回答。并不总是这样。 【参考方案1】:

缺少依赖项!

好的,所以不必担心依赖关系,为什么不将它们与应用程序的代码一起打包到Uber Jar

这可以使用mnv 轻松完成。 您可以通过在 POM 文件的插件部分中包含 maven-assembly-plugin 来配置 Maven,以从您的项目构建一个 Fat JAR。

将此添加到您的pom.xml

configuration>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>

            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>

然后运行mvn clean package。这会将您的依赖项打包到您的 jar 中,并且它们不可能丢失。

这是link,其中包含有关该主题的更多详细信息

这能解决您的问题吗?在 cmets 中告诉我

【讨论】:

试过但没有成功。不过谢谢你 输出是什么? JAR 的内容是什么?部署时是否遇到同样的错误? 我几乎被卡住了一步。我什至无法部署它,因为它卡在了管道中,出现了一些无法识别 jar 的奇怪错误。在本地,我遇到与以前相同的错误

以上是关于在 ec2 上安装 playwright 依赖项以在 Java 中使用它的主要内容,如果未能解决你的问题,请参考以下文章

尝试在 ec2 上安装 php-mbstring 的依赖问题

有人在 Windows Server 上安装并运行 Playwright 吗?

在 docker 中运行 playwright 时缺少依赖项

在 TinyIOC 中注册依赖项以在 NancyFX 中使用

无法安装 playwright:找不到使用 Playwright 的项目。确保项目或解决方案存在于

如何在 EC2 实例(ubuntu)上安装 RabbitMQ?