gpt4 book ai didi

java - 我可以在未展开的 WAR 中获取 JAR 中文件的 URLConnection 吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:37:16 24 4
gpt4 key购买 nike

我有一些资源文件位于我的 Web 应用程序的类路径中(如果重要的话,在 JAR 中)。我知道我可以通过调用例如访问这些资源的内容SomeClassLoader.getResourceAsStream( "/samples/myscript.txt")。我过去曾在explodednon-exploded WAR 文件中成功测试过这一点。

但是,为了与我的应用程序中的其他一些现有类集成,我需要为该文件提供一个 URLConnection 对象。我测试并确认调用 getResource("/samples/myscript.txt").openConnection()exploded WAR 中有效(另外,调试显示结果是 file:/// 展开文件的 URL)。

问题:该方法是否也适用于未爆炸(“打包?”)WAR?

(我目前无法轻松访问部署 war 而不引爆 war 的服务器,因此我为什么要问而不是直接尝试它。另外,一些服务器(例如 Jetty、Tomcat —— 即使使用 unpackWARs ="false") 允许非爆炸式部署,但在幕后他们解开了 war ,有效地表现得像爆炸式部署——而且,显然,工作正常。我认为过去给我带来麻烦的服务器是 Websphere 和 Weblogic)。

最佳答案

我不这么认为。为此,您必须使用 JarUrlConnection对于其基础 URL 是另一个 JAR URL 的 JAR URL。如果我尝试这样做,我会得到:

java.net.MalformedURLException: no !/ in spec

'spec' 是 JarUrlConnection 调用的引用 JAR 内文件的路径。似乎对于像 jar:jar:file:///outer.jar!/inner.jar!/myscript.txt 这样的 URL , 它在 第一个 感叹号处砍掉规范,然后拒绝 inner.jar!/myscript.txt作为规范。实际上,我们希望它在最后一个感叹号路径处砍掉规范,解开内部 URL(指的是外部 JAR!)以用作基础。不幸的。我想不出任何办法解决这个问题。

关于java - 我可以在未展开的 WAR 中获取 JAR 中文件的 URLConnection 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6574189/

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