小编典典

小服务程序如何获取小服务程序外部文件的绝对路径?

tomcat

我们一直在使用System.getProperties(“
user.dir”)来获取属性文件的位置。现在已经将它部署在Tomcat上(通过servlet),系统调用将位置指定为tomcat,而不是属性文件所在的位置。

我们如何动态调用属性文件?

鉴于:

  • Tomcat不是部署应用程序的唯一方法
  • 我们无法控制该应用程序的放置位置。
  • 相对路径将不起作用,因为正在使用Vista,并且Vista会中断相对路径。
  • 这必须在所有操作系统上都可以使用,包括(但不限于)Linux,XP和Vista。
  • 编辑 我暗示了这一点,但是如果我不够清楚的话,我将无法知道String的路径。

阅读 256

收藏
2020-06-16

共1个答案

小编典典

您必须有一种方法来了解属性文件的路径,然后可以将其包装到File中并传递给属性对象的load()方法。

如果您在Tomcat服务中运行,则不会以安装该服务的用户身份运行,因此无法派生主目录。然后,您很可能需要对某些内容进行硬编码。


编辑:属性文件是相对于应用程序。有关如何获取给定类的字节码的文件名的示例,请参见http://www.exampledepot.com/egs/java.lang/ClassOrigin.html。您应该可以从那里继续。

Class cls = this.getClass();
ProtectionDomain pDomain = cls.getProtectionDomain();
CodeSource cSource = pDomain.getCodeSource();
URL loc = cSource.getLocation();  // file:/c:/almanac14/examples/

您应该意识到某些安全管理器不允许这样做。

2020-06-16