Tomcat服务器,能够上传jar文件和相对路径



我运行了Tomcat服务器。并且可以在web界面中上传jar文件。现在,服务器能够调用上传的jar文件的方法。问题是,我在jar文件中得到了一些文件的相对路径。如果我在本地运行我的jar文件,这没有问题,但在服务器上,路径已经不合适了。

jar文件上传的位置是通过以下方式给出的:

arg0.getServletContext().getRealPath(File.separator) + "WEB-INF" + File.separatorChar + "lib" + File.separatorChar;

从我的jar文件中,我没有获得Servlet上下文的选项,因为它是jar文件中的一个封闭环境。

知道我怎样才能访问这些文件吗?

储罐

您不应该像对待磁盘文件系统资源一样对待Java应用程序归档中的资源(JAR、WAR、EAR、whatevAR)。您应该像对待类路径资源一样对待它们。

简单地说,这是错误的,因为它取决于JVM启动时的"当前工作目录",而您无法从Java应用程序内部控制它:

InputStream resource = new FileInputStream("file.ext"); // Relative to CWD.

其中一个是正确的,这取决于您是否希望允许用户通过将另一个资源放在JAR之外的一个具有更高类加载优先级的位置上完全相同的FQN上来覆盖JAR绑定的资源:

InputStream resource = getClass().getResourceAsStream("file.ext"); // Relative to class' package.
InputStream resource = Thread.currentThread().getContextClassLoader().getResourceAsStream("file.ext"); // Relative to classpath root.

另请参阅:

  • getResourceAsStream()与FileInputStream
  • 在基于servlet的应用程序中,在哪里放置配置资源文件以及如何读取配置资源文件

最新更新