【问题标题】:How can I get the url of a file which is outside the jar?如何获取 jar 外部文件的 url?
【发布时间】:2020-08-12 18:49:41
【问题描述】:

我已经使用 maven-assembly-plugin 以分解模式部署了 spring-boot 应用程序。目标文件夹包含以下结构:

+springdemo-0.0.1-application.zip
  +config
    +myfolder
      -profile.png
  +springdemo-0.0.1.jar       //running this jar file
  +start.sh
-springdemo-0.0.1.jar

我想要控制器类中 profile.png 文件的 url。

我试过这个,但它给了我网址:http://ip:port/config/myfoler/profile.png。

getImageDownloadUri("config/myfolder/" + filename)
public static String getImageDownloadUri(String imagePath) {
    return ServletUriComponentsBuilder.fromCurrentContextPath().path(imagePath).toUriString();
}

我也试过这个,它给了我 url: null

MainController.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath(); 

【问题讨论】:

  • 第二个springdemo-0.0.1.jar是什么?
  • zip里面的jar文件是由汇编获取的(从project.build.directory获取所有jar),另一个是maven build创建的。

标签: spring-boot maven-assembly-plugin


【解决方案1】:

您无法从springdemo-0.0.1.jar 中可靠地获取路径,因为它取决于 JVM 从何处启动。也就是说,您可以执行以下操作:

File(MyClass.class.getProtectionDomain().getCodeSource().getLocation().toURI()).getPath();

用真实的类名替换MyClass

另一种选择是设置一个指向部署目录的环境变量,然后在MyClass 中使用它。

【讨论】:

  • @rupal3112 “您无法可靠地获取路径”的哪一部分您不清楚?尝试第二个选项。
  • @rupal3112 不,您还没有尝试过第二个选项。等你回来。
  • @rupal3112 了解应用程序部署的基础知识,我们不要在这里浪费时间..
猜你喜欢
  • 2020-12-04
  • 1970-01-01
  • 2013-12-08
  • 2017-10-07
  • 2012-12-25
  • 2011-04-09
  • 2014-03-24
  • 2010-09-28
相关资源
最近更新 更多