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

复制文件到已存在的Jar

    博客分类:
  • life
阅读更多

问题

这两天在写一个小东西。这个小东西是一个大东西的一部分。其实也就是其中的一两个类。而这个大东西需要部署到一个特定的环境中去运行。所以有一堆的限制条 件,比如什么配置文件啊,包名,版本之类的什么东西。稍微有点差错就没有办法运行。需要正确得到这些东西需要一个很庞大且冗长的构建过程。而我写的也就是 两三个类,所以最直接的方式就是把我写的java 文件编译或的class 文件直接复制到jar文件中。 完成这样工作有好几中方式,最直接的方式就是纯手工打造


GraphViz image

PS: 这种方式费时费力,需要在不同的窗体间进行切换。例如我现在就在Eclipse、WinRaR和Windows资源管理器间切换。

解决过程

如何避免这个过程呢,尽量不用人来参与其中。这个肯定就是让一个小程序来把这几个动作连接起来。而且还要能够方便变动。比如我现在不想往a.jar 里面copy了。我想向b.jar 中复制了。所以就想到了脚本。对让脚本来完成这样的事情。第一反应想到的是ant

Ant 我的主角

  Ant 是 何须人,就不用我多说了。其实我了解也不多,只是知道这个小蚂蚁蛮力超大。下面就着手解决问题。第一反应就是找到一个直接copy的任务,把 fileset中的文件复制到jar文件中。但是遗憾的是我没有能够找到这样一个Task.这个时候我的思维陷入了困境。下面该怎么办?

困境

没有现成的东西,没有现成的能一步完成的东西?如何是好? 我是程序员,所以我我自己可以写一个task来满足这样的需求啊。对啊,我可以自己写的!正当我为这个想法兴奋不已时,正卷起袖子准备“大干”的时候。突然想起某人说过 不要重新造轮子! 。所以就追问了我自己一句: 角处会有什么呢?

我的拐角

既然Ant有蛮力,我可否利用一下他的蛮力呢?通过如下的这么一个流程来达到我的目的。


GraphViz image

这里用了一个temp文件夹作为中转,先解压,copy需要的文件,最后jar一下获得最后的更新好的jar。 最终获得了如下的build.xml

 <target name="prepare">
                <mkdir dir="${temp_dir}"/>
        </target>
        
        <target name="build" depends="prepare">
                <echo message="unzip">Uzip Jar file</echo>
                <unjar dest="${temp_dir}" src="${comp_plugin}/${contain_plugin}">
                </unjar>
                <copy todir="${temp_dir}">
                        <fileset dir="./bin">
                                
                        </fileset>
                </copy>
                <jar update="true"
                        destfile="c:/${contain_plugin}" 
                        basedir="${temp_dir}" >
                </jar>
        </target>
 
  

调整的过程

看上去,所有问题都解决了。但是偏偏在使用的时候遇到了小问题。我的jar包是要在osgi环境下工作的。所以特别依赖MANIFEST.MF文件。偏偏jar 这个任务默认情况下会生成一个默认的MANIFEST.MF文件。如果任由他胡来的话,就全虾米了。所以要稍微调整一下。

<jar update="true"
                        destfile="c:/${contain_plugin}" 
                        basedir="${temp_dir}" 
                        manifest="${temp_dir}/META-INF/MANIFEST.MF">
</jar>
 

这样就可以了。大功告成!!

  • 大小: 30.5 KB
  • 大小: 37.8 KB
1
0
分享到:
评论

相关推荐

    文件上传所需jar包

    为了实现这一功能,开发者通常需要引入特定的库或框架,这些库通常以jar(Java Archive)文件的形式存在。本篇文章将详细讲解与"文件上传所需jar包"相关的知识点,包括如何使用这些jar包以及它们在文件上传过程中的...

    springboot+maven打包demo【将依赖与配置文件打包到jar包外部】

    在本文中,我们将深入探讨如何使用Spring Boot和Maven来构建一个项目,使得依赖和配置文件被打包到jar包外部,以实现更加灵活的项目管理。这个方法对于那些需要根据不同环境进行定制配置或者频繁更新配置的应用来说...

    文件上传下载需要的jar包 java文件上传下载

    8. **错误处理与日志记录**: 为确保系统的健壮性,应处理各种可能出现的异常,如文件不存在、磁盘空间不足、网络中断等,并通过日志系统记录相关事件,便于问题排查。 9. **进度反馈与取消操作**: 对于用户体验,...

    springMVC文件上传所需jar包

    在处理文件上传功能时,SpringMVC需要依赖一些特定的库,这些库通常是以jar(Java Archive)文件的形式存在的。在这个压缩包中包含的两个关键jar文件——`com.springsource.org.apache.commons.io-1.4.0.jar`和`...

    jsp文件上传下载jar包

    这些库通常是以JAR(Java Archive)文件的形式存在,它们包含了必要的类和资源,方便开发者进行功能集成。以下是关于JSP文件上传下载以及所用到的JAR包的详细解释: 1. 文件上传: 在JSP中处理文件上传,我们需要...

    java文件上传常用jar包

    在文件上传场景中,虽然不是直接处理文件上传,但可能用于辅助操作,如检查文件是否存在、移动或复制文件。 总的来说,这些jar包构成了处理Java文件上传的基础设施,它们一起帮助开发者轻松地在Web应用中实现安全、...

    java文件上传的用到的jar包

    总的来说,"java文件上传的用到的jar包"是一个包含各种文件上传解决方案的集合,涵盖了从基本的Servlet API到强大的第三方库,为Java开发者提供了丰富的工具来处理文件上传的需求。正确理解和使用这些库,可以使你的...

    文件批量复制Java代码

    在Java编程中,批量复制文件是一项常见的任务,特别是在软件开发过程中,如Eclipse这样的集成开发环境(IDE)可能不提供批量导出第三方库的功能。此时,开发者需要自定义代码来实现这一需求。本文将深入探讨如何使用...

    反编译jar包所需的jar文件jclasslib.jar ,kotlin-runtime,kotlin-stdlib

    它允许开发者查看、分析和调试Java类文件,包括那些存在于`.jar`文件中的。jclasslib不仅能够展示类的结构,如字段、方法、常量池等,还可以将字节码反编译为接近原始源代码的格式,尽管它可能不完全相同于原始的...

    commons-fileupload-1.2.1.jar和commons-io-1.3.2.jar程序文件

    1. **文件操作**:例如复制、移动、删除、重命名文件,以及检查文件的存在、大小、类型等。 2. **流操作**:如读写输入/输出流,转换不同类型的流,以及缓冲流操作。 3. **文件过滤器**:可以用来筛选特定类型的文件...

    用于文件上传的两个jar包

    1. **文件操作**:提供了一系列静态方法来创建、复制、删除、移动文件,以及检查文件的存在、大小、类型等。 2. **流操作**:帮助开发者在字节流和字符流之间转换,或者读写文件、网络连接等。 3. **过滤和转换**:...

    文件上传所需的jar包

    在文件上传场景中, Commons IO 可能用于辅助处理文件,例如创建临时文件、读取文件内容或者检查文件是否存在等。 在实际使用中,通常先创建一个`DiskFileItemFactory`实例来配置文件存储参数,然后用这个工厂实例...

    java解压zip或rar压缩文件源码与jar包

    - 如果ZIP或RAR文件中含有目录结构,需要正确地创建并复制这些目录到目标位置。 - 为防止文件覆盖,可以在解压前检查目标路径是否存在同名文件。 综上所述,这个Java接口类解决了在解压ZIP和RAR文件时可能出现的...

    MAC Jar反编译工具

    这将把`input_jar_file.jar`中的所有类文件反编译到`output_dir`目录下。 值得注意的是,反编译并不总是能够完全恢复原始的源代码,特别是当原代码使用了混淆技术或者没有保留原始的行号和变量名时。此外,反编译...

    cpdetector.jar java检测文件编码开源jar包

    对于非Maven项目,可以直接将jar包复制到项目的lib目录下。 2. **导入库**:在Java代码中,通过`import` 语句引入相关的类,如`com.sun.org.apache.xerces.internal.util.CharsetDetector` 和 `...

    查找JAR(根据比较文本文件)工具类(安全)

    4. **复制JAR**:如果比较结果为真,工具类可能提供了复制这些JAR到指定新目录的功能。这可以使用`FileInputStream`和`FileOutputStream`配合`byte[]`缓冲区来实现文件的复制。 5. **错误处理与安全性**:为了确保...

    FileManager源码与Jar压缩文件

    在原始路径下更改文件名可能涉及到文件重命名或者移动操作,传统方式可能需要考虑多个步骤,如检查文件是否存在、创建新文件、复制内容等。而使用FileManager,这个过程被封装成一个单一的方法,例如`FileManager....

    “上传文件”Jar包集合

    `commons-io-1.4.jar`在这里的作用主要是为FileUpload提供基础的输入/输出操作支持,如文件的读写、复制、删除等。在文件上传过程中,IO库帮助处理临时文件的存储、文件大小的检查以及错误处理等环节。 使用这两个...

    里面有两个jar包

    在操作系统中,当我们提到“覆盖”,通常是指目标位置已经有同名文件存在时,新文件会替换旧文件。在执行这个操作时,需要谨慎,因为一旦覆盖,原有文件的数据将无法恢复。在Java环境中,我们可以使用`java.nio.file...

    文件上传下载所需jar包

    使用FileUpload,开发者可以轻松地将用户的文件上传到服务器,处理多个文件上传,以及设定上传大小限制等。 `commons-fileupload-1.3.3.jar`提供了以下关键功能: 1. 解析multipart/form-data请求,将文件数据分离...

Global site tag (gtag.js) - Google Analytics