我如何确定从中调用fatjar的工作目录

时间:2019-03-14 18:35:27

标签: fatjar working-directory

我有一个做成胖子的项目。将其拖入/ build / libs

我已经转到此目录,并使用文件作为参数来调用fatjar。

步骤

  1. cd / build / libs
  2. java -jar .jar --execute script.groovy

这将启动Main-Class,这是一个从命令行读取args的启动器类。

但是,由于文件名是'script.groovy'而得到的,多数民众赞成在与我拥有jar文件的目录相同的位置

但是在类/ fatjar中,如果您查看

System.getProperty("user.dir")

Path path = FileSystems.getDefault().getPath(".").toAbsolutePath()

它们都将路径报告为projectRoot目录-而不是从(/ build / libs)运行jar本身的地方

在类内部的fatjar中,如何确定从命令行调用fatjar实际所在的目录?

1 个答案:

答案 0 :(得分:0)

我对此也有些挣扎。从spring开始,您可以在StartupInfoLogger.java中找到一些提示。我正在使用2.1.5春季启动版本。

这是一些示例代码。

public class MyTestFatJarMainClass {
    public static void main(String[] args) {
        SpringApplication.run(MyTestFatJarMainClass.class, args);
        // The needed code start below 

        // The class is MyTestFatJarMainClass.class, but it can be any class in your app
        ApplicationHome home = new ApplicationHome(MyTestFatJarMainClass.class);
        String path = (home.getSource() != null) ? home.getSource().getAbsolutePath() : "";
        // Now you got the path, it contains the jar file itself.
        System.out.println("DINDA " + s + " path " + path);

    }
}

您还可以阅读String属性= System.getProperty(“ user.dir”);

检查其中哪一个对您有用。