在本地运行该应用程序时,它可以工作。但是,在我用maven构建了一个jar并将它推到云铸造厂之后,它无法通过本地绝对文件路径( krb5.keytab的路径)在我的application.yml文件中找到krb5.keytab文件。例如keytab: key: krb5.keytab文件: C:\Users\Documents\WorkSpace\MyProject\kafkatool\krb5.keytab
我需要如何更改krb5.keytab的文件路径,以便当它在云铸造厂上运行时,应用程序仍然可以找到keytab?
发布于 2022-04-27 12:59:02
当您的Java应用程序在CloudFoundry上运行时,它是在远程Linux容器中运行的。它无法访问您的本地文件系统,而且您引用的任何文件都必须位于Linux容器的文件系统中,因此没有c:\ Windows样式的路径能够工作。
在CF上运行应用程序时,您的应用程序位于/home/vcap/app目录中(在/app上也有一个符号链接,指向您可以使用的/home/vcap/app )。
此外,您的应用程序将在/home/vcap/app目录之外执行,因此当前的工作目录将是/home/vcap/app。
因此,如果您需要引用文件,您可以相对于/home/vcap/app目录引用它们,或者可以在所有路径中加上/home/vcap/app前缀,并使用文件的完整路径。
如果您不喜欢将/home/vcap/app硬编码到应用程序中的想法,可以通过查看HOME环境变量动态地获取这个目录。当应用程序运行时,HOME env变量指向/home/vcap/app。
https://stackoverflow.com/questions/72017225
复制相似问题