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

时间:2015-06-25 10:06:55

标签: tomcat servlets jar upload relative-path

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

上传jar文件的地方是:

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

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

任何想法如何访问文件?

坦克

1 个答案:

答案 0 :(得分:0)

您不应将Java应用程序存档(JAR,WAR,EAR,whatevAR)中的资源视为磁盘文件系统资源。您应该将它们视为类路径资源。

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

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

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

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

另见: