我有一个DIY墨盒。我的项目结构看起来像

MY_PROJECT
-diy
  -myProgram.jar
  -resources
    -file1, file2...
-.openshift
  -action_hooks
    -start


myProgram.jar使用文件夹“ resources”中的文件。
代码看起来像

    File imageFolder = new File("resources");
    System.out.println("Image Folder read:"+imageFolder.canRead()); //canRead returns false
    File[] listOfFiles = imageFolder.listFiles(); // here I get null


该程序通过动作钩子“开始”运行:

nohup java -jar $OPENSHIFT_REPO_DIR/diy/*.jar --server.port=${OPENSHIFT_DIY_PORT} --server.address=${OPENSHIFT_DIY_IP} &


问题是我无法使用文件。
如代码注释中所述,我在listFiles()上获得null。

如果我在Openshift上手动运行程序(ssh到server / $ OPENSHIFT_REPO_DIR / diy /并运行java -jar ...),它可以工作,但不能通过action_hooks来工作。

先感谢您!

最佳答案

我解决了Openshift环境变量'OPENSHIFT_REPO_DIR'的问题。
而不是使用相对路径

new File("resources");


我用绝对

String absolutePath = System.getenv("OPENSHIFT_REPO_DIR");
new File(absolutePath + "diy/resources")

07-28 00:38