内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用
我在运行时得到一个JAR文件url,如下所示:
jar:file:///C:/proj/parser/jar/parser.jar!/test.xml
如何将其转换为有效路径:
C:/proj/parser/jar/parser.jar.
我已经试过用File(URI)
,getPath()
,getFile()
但都没有用
不确定是否有确切的方法可以提供你想要的东西,但这应该会使你接近:
import static org.junit.Assert.assertEquals; import java.net.URL; import org.junit.Test; public class UrlTest { @Test public void testUrl() throws Exception { URL jarUrl = new URL("jar:file:/C:/proj/parser/jar/parser.jar!/test.xml"); assertEquals("jar", jarUrl.getProtocol()); assertEquals("file:/C:/proj/parser/jar/parser.jar!/test.xml", jarUrl.getFile()); URL fileUrl = new URL(jarUrl.getFile()); assertEquals("file", fileUrl.getProtocol()); assertEquals("/C:/proj/parser/jar/parser.jar!/test.xml", fileUrl.getFile()); String[] parts = fileUrl.getFile().split("!"); assertEquals("/C:/proj/parser/jar/parser.jar", parts[0]); } }
希望这能帮上忙。
这可能会做到:
final URL jarUrl = new URL("jar:file:/C:/proj/parser/jar/parser.jar!/test.xml"); final JarURLConnection connection = (JarURLConnection) jarUrl.openConnection(); final URL url = connection.getJarFileURL(); System.out.println(url.getFile());