gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 23:30:23 34 4
gpt4 key购买 nike

我运行了一个 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.

另见:

关于具有上传 jar 文件和相对路径能力的 Tomcat 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31047283/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com