`
weifly
  • 浏览: 238918 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

手工关闭URL打开的jar包

阅读更多

URL中有openConnection方法,会返回一个URLConnection类型的对象,通过这个对象可以读取资源的内容非常方便

URLConnection的具体类型是根据URL中的协议的不同而不同,协议包括http、ftp、file、jar等。

jar协议实例为:jar:file:/d:/test/packApp.war!/

此时返回的connection类型为:sun.net.www.protocol.jar.JarURLConnection

 

遗憾的是URLConnection中没有提供关闭连接的方法,导致打开的资源无法手工关闭,这样当取出完jar包内容后,无法从程序中删除jar包文件。最近因为这个事情很郁闷,在查看了很多代码后,终于找到了关闭jar协议的方法:

import java.io.File;
import java.net.JarURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.util.jar.JarFile;

public class TestUrl {

	public static void main(String[] args) throws Exception{
		String str = "d:/test/packApp.war";
		URL url = new File(str).toURI().toURL();
		
		String jarStr = "jar:" + url.toExternalForm() + "!/";
		URL jarUrl = new URL(jarStr);
		URLConnection urlCon = jarUrl.openConnection();
		// urlCon在调用connect方法后将打开对应的jar文件
		// 此后就不能在文件系统中手工删除jar包了
		urlCon.connect();
		System.out.println(jarUrl.toString());
		System.out.println(urlCon.getClass().getName());
		
		// 要关闭对应的jar包文件,需要获得JarFile对象
		// 然后调用close方法
		JarFile jarFile = ((JarURLConnection)urlCon).getJarFile();
		jarFile.close();
		System.out.println("after release jar file");
	}
}
 
0
4
分享到:
评论
1 楼 di1984HIT 2013-05-22  
写的很好啊。

相关推荐

    修改url的jar包

    标题中的“修改url的jar包”指的是一个Java的开源库,通常用于URL重写功能,以便在不改变实际页面地址的情况下,对用户显示一个更友好的或者更安全的URL。这种技术在SEO(搜索引擎优化)和网站安全性方面都有重要的...

    jar包 jar包jar包 jar包jar包jar包jar包jar包jar包

    jar包 jar包jar包 jar包jar包jar包jar包jar包jar包jar包 jar包jar包 jar包jar包jar包jar包jar包jar包jar包 jar包jar包 jar包jar包jar包jar包jar包jar包

    各种你需要的JAR包

    所有jar包集全,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR包,JAR...

    UrlBase64 jar包

    UrlBase64 jar包 bcprov-jdk15-136.jar

    Java后台打开浏览器所用到的jar包

    这个过程可以通过调用特定的库来实现,而"Java后台打开浏览器所用到的jar包"就是这样一个工具。这个jar包包含了必要的功能,可以让Java应用程序在后台启动用户的默认浏览器来显示指定的URL。 在Java中,没有内置的...

    jar包反编译工具看jar包源码必备

    在IT行业中,jar(Java Archive)包是一种常用的文件格式,用于集合Java类文件、相关的元数据和资源文件,便于分发和执行。当你需要查看jar包内的源代码,特别是没有提供源码的情况下,就需要借助“jar包反编译工具...

    jd_gui工具直接打开jar文件,显示源代码

    标题中的“jd_gui工具直接打开jar文件,显示源代码”是指使用JD-GUI这款软件来查看Java可执行jar包中的源代码。JD-GUI是一款独立的图形化工具,它允许开发者查看Java字节码反编译后的源代码,这对于调试、学习或者...

    jar包启动脚本与关闭脚本win+linux

    总结来说,这些脚本使得管理基于Spring Boot的jar包应用变得更加便捷,无论是启动还是关闭,都能在Windows和Linux上进行,并且可以灵活地配置端口、外部配置文件等参数。在实际操作中,还需要注意确保安全性,比如...

    SAX的jar包 SAX的jar包

    SAX的jar包 SAX的jar包SAX的jar包 SAX的jar包 SAX的jar包

    j2ee.jar架包

    j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar...

    数据库驱动jar包

    数据库驱动jar包是Java编程中连接不同数据库管理系统(如MySQL、Oracle、SQL Server)的关键组件。这些jar包包含了Java Database Connectivity (JDBC) API的实现,使得Java应用程序能够与各种数据库进行交互,执行...

    手工jar打包

    以下是一份详细的手工JAR打包指南,包括如何编译Java源文件,创建配置文件,以及如何制作可执行的JAR文件。 首先,我们来了解如何将Java源文件(.java)编译成字节码文件(.class)。假设你有一组Java源文件,你...

    Eclipse怎么打jar包(可运行的jar包)

    Eclipse怎么打jar包(可运行的jar包) 教你一步一步,学会怎么打jar包,内含详细图文教程。

    java3d开发jar包

    java3d开发jar包java3d开发jar包java3d开发jar包java3d开发jar包java3d开发jar包java3d开发jar包java3d开发jar包java3d开发jar包java3d开发jar包java3d开发jar包java3d开发jar包java3d开发jar包java3d开发jar包java...

    java连接oracle数据库jar包

    5. 最后,记得关闭打开的资源,如`ResultSet`、`Statement`和`Connection`,以防止资源泄露: ```java rs.close(); stmt.close(); conn.close(); ``` 6. 还有一些高级特性,如事务管理、批处理、预编译的SQL...

    达梦数据库JAR包

    达梦数据库JAR包是专门为Java开发者设计的,用于在Java应用程序中与达梦数据库进行交互的工具包。达梦数据库是中国自主研发的一款高性能、高可用性的关系型数据库管理系统,广泛应用于政府、金融、电信等关键领域,...

    websocket jar包 亲测可用

    "使用说明- jar包.txt"文件很可能是该WebSocket库的使用指南,其中会详细描述如何将这个jar包引入到Java项目中,包括添加依赖、初始化配置、创建WebSocket连接、发送和接收消息等步骤。通常,这样的说明文件会包含...

    mysql57驱动jar包

    MySQL驱动jar包是Java开发者用来连接Java应用程序和MySQL数据库的关键组件。这个压缩包包含了不同版本的MySQL Connector/J,它是MySQL官方提供的Java数据库连接器。 1. **MySQL Connector/J**: MySQL Connector/J...

    用于修改jar文件包路径

    重新打包(重命名)的工具,在jar包重复的情况下使用。 这里我们以 gson.jar 为例,在 gson.jar 包目录下新建一个文本文件,名字随意,例如 rule.txt,写入下面的内容。 rule com.google.gson.** ...

    eclipse快捷打开文件夹jar包

    "eclipse快捷打开文件夹jar包"这个标题暗示了如何在Eclipse中快速定位并访问这些JAR文件所在的文件夹。 在Eclipse中,右键点击项目中的JAR文件或任何其他文件,选择"Open With" -> "Resource Viewer",可以查看该...

Global site tag (gtag.js) - Google Analytics