gpt4 book ai didi

java - Linux 二进制文件应位于何处,以便在 PCF 中运行的 Spring Boot 微服务中通过 ProcessBuilder/Runtime 进行调用

转载 作者:行者123 更新时间:2023-12-02 02:38:56 34 4
gpt4 key购买 nike

我正在尝试通过运行时或 ProcessBuilder 在 Spring Boot REST Controller 中调用 Linux 二进制文件如果我调用像 "ls -la" 这样的内置函数,它在 PCF 中工作得很好。

但是,当我使用绝对路径位置调用二进制文件时,出现错误,如下所示:进程 p= Runtime.getRuntime().exec("C:\\temp\\testbinary\\mybináry"); 错误是:无法运行程序“C:\temp\testbinary\mybinary”:错误=2,没有这样的文件或目录如果我在本地调用 REST 端点,它会运行,但会说我的命令不是 Win32 应用程序,这很好。因此,显然,当调用 REST 端点时,PCF 无法访问本地文件系统,这是合乎逻辑的。那么这是否意味着我需要一个外部存储来存储我的二进制位置以及文件输入参数?请问还有什么替代方案吗?

是否可以将二进制文件与 Spring Boot Jar 文件一起打包?如果是,在 PCF 上部署后如何访问微服务中的二进制文件?

最佳答案

However, I get an error, when I call my binary using the absolute path location like so: Process p= Runtime.getRuntime().exec("C:\temp\testbinary\mybináry");

使用绝对路径就可以了,您只需使用相对于运行应用程序的容器的路径,而不是本地开发人员工作站的路径。

部署您的应用程序后,它将位于 /home/vcap/app/app (指向前者的符号链接(symbolic link))。您可以对路径进行硬编码,也可以使用 $HOME$PWD,它们是本质上指向同一位置的环境变量。

您也可以只使用相对路径。当前工作目录将是 /home/vcap/app,因此您也可以尝试一下。

Is it possible to package the binary with the Spring Boot Jar File together? And if yes, how do I access the binary within the Microservice after deployment on PCF?

是的,这正是您需要做的才能使这项工作成功。您将构建 native 可执行文件并将其复制到 Java 应用程序中的某个位置。我认为将其放入 src/main/resources (或子目录)中就可以了,但是您也可以将其放在其他地方(只要用户不能公开访问该二进制文件即可) )。

之后,只需更改流程构建器命令以引用包含应用程序的位置即可。

希望有帮助!

关于java - Linux 二进制文件应位于何处,以便在 PCF 中运行的 Spring Boot 微服务中通过 ProcessBuilder/Runtime 进行调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57191839/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com