我有一个做成胖子的项目。将其拖入/ build / libs
我已经转到此目录,并使用文件作为参数来调用fatjar。
步骤
这将启动Main-Class,这是一个从命令行读取args的启动器类。
但是,由于文件名是'script.groovy'而得到的,多数民众赞成在与我拥有jar文件的目录相同的位置
但是在类/ fatjar中,如果您查看
System.getProperty("user.dir")
或
Path path = FileSystems.getDefault().getPath(".").toAbsolutePath()
它们都将路径报告为projectRoot目录-而不是从(/ build / libs)运行jar本身的地方
在类内部的fatjar中,如何确定从命令行调用fatjar实际所在的目录?
答案 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”);
检查其中哪一个对您有用。