精华内容
下载资源
问答
  • 备份jar包的一些坑

    千次阅读 2020-03-01 22:31:37
    我们在更新jar包时,经常会对旧的jar包备份。目前常见的备份方式有以下几种: 1、重命名旧的jar包,加上一些后缀。如 xxx.jar -> xxx.jar.bak 2、在程序指定的classpath下创建一个backup目录(通常是程...

    一、更新jar包时的一些现象

    我们在更新jar包时,经常会对旧的jar包做备份。目前常见的备份方式有以下几种:

    1、重命名旧的jar包,加上一些后缀。如 xxx.jar -> xxx.jar.bak

    2、在程序指定的classpath下创建一个backup目录(通常是程序的lib目录下创建),然后把旧的jar包放入。如 lib/xxx.jar 移动到 lib/backup/xxx.jar

    3、额外新建一个与classpath无关的备份目录,把jar包扔到那个目录下

    以上三种方案中,第三种方案无疑是最安全的。但是前两种方案是否可行呢?我们可以做个测试。

    二、jar包加载测试

    2.1、测试前的准备

    我们准备三个jar包:test.jar,a.jar,b.jar,c.jar。

    a.jar 下有类 com.test.A

    public class A {
    
        @Override
        public String toString() {
            return "load A";
        }
    }
    

    b.jar 下有类 com.test.B

    public class B {
    
        @Override
        public String toString() {
            return "load B";
        }
    }
    

    c.jar 下有类 com.test.C

    public class B {
    
        @Override
        public String toString() {
            return "load B";
        }
    }
    

    然后准备test.jar,有类 com.test.Test

    public class Test {
    
        public static void main(String[] args) throws Exception {
            String className = args[0];
            Class<?> aClass = Class.forName(className);
            Object object = aClass.newInstance();
            System.out.println(object);
        }
    }
    

    之后新建一个目录 /tmp/test,把jar包放进,最后有以下结构:

    /tmp/test/test.jar
    /tmp/test/a.jar
    /tmp/test/b.jar.bak
    /tmp/test/backup/c.jar
    

    2.2、测试方案一

    之后我们开始测试方案一:以.bak后缀的jar包是否会被加载到:

    java -Djava.ext.dirs=/tmp/test -cp /tmp/test/test.jar com.test.Test com.test.B
    

    最后输出:

    load B
    

    2.3、测试方案二

    接着测试方案二:把jar包放在classpath的子级目录中,会被加载吗?

    java -Djava.ext.dirs=/tmp/test -cp /tmp/test/test.jar com.test.Test com.test.C
    

    输出:

    Exception in thread "main" java.lang.ClassNotFoundException: com.test.C
    	at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    	at java.lang.Class.forName0(Native Method)
    	at java.lang.Class.forName(Class.java:264)
    	at com.yangjb.Test.main(Test.java:16)
    

    三、结论

    很显然,**采用第一种方案以修改后缀备份jar包的话,这个备份的jar包依然会有被加载到的风险。**虽然大多数时候,xxx.jar 会比 xx.jar.bak 更先被加载到,但是并不意味着绝对安全。因此,在线上更新jar包时,还是不要采用这种方式备份jar包。

    使用第二种方案备份的jar包,是不会被jvm加载的。但是笔者在更新一个springboot jar包时,却遇到过这种场景下备份jar包被加载的问题,后面查了下springboot的文档,发现springboot是会递归去加载loader.path(springboot通过该参数指定classpath)下的所有jar包:

    https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#executable-jar-property-launcher-features

    在这里插入图片描述

    所以,第二种方式也并不意味着绝对的安全。

    其实关于备份jar包是否会被jvm加载,取决于jvm类加载器的行为,各种类加载器查找类的行为不一,所以最稳妥的备份方案还是创建一个与程序无关的目录进行备份。

    展开全文
  • 这种方式相当于我们把svn目录拉到本地(svn co命令),然后将jar包拷贝到目录中,然后上传到svn中。 mkdir -p tmp && cd tmp && rm -rf ./* && svn co svn://svn.haha....

    第一种 脚本方式

    这种方式相当于我们把svn目录拉到本地(svn co命令),然后将jar包拷贝到目录中,然后上传到svn中。

    mkdir -p tmp && 
    cd tmp &&
    rm -rf ./* &&
    svn co  svn://svn.haha.com/release/05_ww/UAT/05_ws_`date +%Y%m` --username "lll" --password "${pwd}" --no-auth-cache && 
    cd 05_wwms_`date +%Y%m`/ &&
    cp ${WORKSPACE}/war/xxx.war ${WORKSPACE}/war/xxx.war.`date +%Y%m%d%H%M%S` &&
    cp -r ${WORKSPACE}/war/xxx.war.`date +%Y%m%d%H%M%S` ./ &&
    svn add xxx.war.`date +%Y%m%d%H%M%S` && 
    svn commit -m "wwwms测试环境发布包-$(date +%F)" --username "lll" --password "${pwd}" --no-auth-cache

    使用这种方式连svn时,需要用到密码,可以在jenkins中配置。

     

    第二种方式  使用svn publisher插件

    第1步,安装svn publisher插件

     

    第2步,执行连接svn的命令,缓存密码

    插件连接svn时需要密码,可以先执行下命令连接svn,将svn密码缓存在服务器。

    svn://svn.haha.com/release/05_ww/UAT/05_ws_`date +%Y%m` --username "lll" --password "pwd"

     

    第3步,配置上传

    展开全文
  • 一些经常用到的jar包备份,一些经常用到的jar包备份,一些经常用到的jar包备份
  • find /opt/app/tomcat-AAA/webapps/ -name "AAA-2.1.7.jar" >> jarreplaceAAA.txt for i in `cat jarreplaceAAA.txt`;do mv $i $i.aq;done awk -F "/" 'OFS="/"{$NF="";print}' jarreplaceAAA.txt >>...

    --AAA
    find /opt/app/tomcat-AAA/webapps/ -name "AAA-2.1.7.jar" >> jarreplaceAAA.txt

    for i in `cat jarreplaceAAA.txt`;do mv $i $i.aq;done

    awk -F "/" 'OFS="/"{$NF="";print}' jarreplaceAAA.txt >>jarreplaceroadAAA.txt

    for i in `cat jarreplaceroadAAA.txt`;do cp -r /root/AAA*.jar $i;done

    =====================================================================

     

    展开全文
  • 通过引入该jar包,实现数据的备份与恢复,详细参考 “java代码实现数据的备份和恢复”博客
  • 文件简介: aIphoneDialogTest.rar 这是示例工程 使用时注意先要在build path中导入iPhoneDialogLib.rar中的jar包 iPhoneDialogLib.rar 这是控件jar包及资源文件 使用时先备份自己的strings.xml,然后将三个目录下的...
  • 本文章适合于有一定linux操作基础的java开发.大神不喜勿喷. 本文创造背景:本人是一个java开发,负责后端开发,由于团队中没有专业的运维人员,故领导总是让我自己一个人...以后就直接把打完包的jar包扔给现场人员让他们.

    本文章适合于有一定linux操作基础的java开发.大神不喜勿喷.

    本文创造背景:本人是一个java开发,负责后端开发,由于团队中没有专业的运维人员,故领导总是让我自己一个人来进行更新操作.另外公司git网络和程序应用的现场网络并不联通,故用Jenkins构建这一套也不能用.每次本人都是先本地打完包,传到现场,备份现场运行的包.然后杀进程,重启服务.十分繁琐.

    脚本流程:

     

    写完脚本之后.上传jar包.执行update.sh就可以完成更新.以后就直接把打完包的jar包扔给现场人员让他们执行update.sh就行.无需本人操作最后执行完脚本的截图

    最后备份文件格式比较清晰了.更新时间yyyy-MM-dd然后更新次数.下次出现异常想回复到哪个版本就可以回复到哪个版本

     

    展开全文
  • artifactory的JAR包备份 1、由于我的artifactory是使用用户jetty启动的,所以新增用户jetty能操作的文件夹/usr/jetty 给jetty用户赋予该目录的权限 root@kiko:/usr# sudo chown -R jetty /usr/jetty root@...
  • 产品打包工具的制作,ant,编译源码,打jar包,打tag,打war包,备份release版本等.pdf
  • Windows Dos命令 jar打包文件,jar打包文件夹 项目上线之后,版本的迭代必不可少,但是怎么做才是规范,安全的呢? 当然原项目备份是必不可少的了: 比如我的项目名是 Wechat (我使用的tomcat服务器,所以该项目...
  • 解压jar包 unzip xxxx.jar 删除xxxx.jar原始文件 也可以不用删除,创建一个文件夹,将解压的文件移动到新建的文件夹中; 如果删除,最好备份下 重新打Jar包 jar -cfM0 xxxx.jar * ...
  • 仅对某个jar包的某个文件的某段代码进行了修改,不影响jar包其它功能的正常使用。 只需要jar包就能完成修改,不需要源代码。 三、使用方法 1.使用IntelliJ IDEA打开某个项目,点击左侧栏下的External Libraries...
  • hibernate 常用jar

    2013-05-06 17:30:04
    hibernate 常用jar ,留着备份
  • 本地jar包打包到本地仓库 Read me —— 指南 你有没有这样的烦恼,已在本地的jar包(可能找不到项目、源码了),想加入本地仓库,不必每次都去拷贝jar(或者添加包的依赖)。想通过版本管理工具Maven、Gradle等直接...
  • Spring 常用jar包

    2013-05-06 17:31:16
    Spring 常用jar 备份,以后留着用
  • activity spring整合jar包

    2017-10-25 11:20:29
    activity spring整合jar包 项目中不可或缺的jar包 备份一下
  • 若依框架打包方法(jar包

    千次阅读 2020-09-21 17:53:47
    注意:除了生成jar包外还会有一个ruoyi.jar.original文件 那只是打包的备份文件没有影响 因为我所用的若依框架是基于spring book 所用打包出来的jar包是不需要放在tomcat中 我这里用的是宝塔的Linux面板(其他...
  • 用于jdbc连接池的jar包和配置文件,上传至csdn备份
  • Java 操作Jar包,删除Jar包内的文件

    千次阅读 2018-01-17 16:57:07
    JDK提供了一套操作Jar包的方法,使用方法如下: 1、JarOutputStream jos = new JarOutputStream(new FileOutputStream(jarName)); 2、jos.putNextEntry(entry); 3、jos.write(bytes, 0, bytes.length...
  • 定时备份文件jar

    2018-11-26 20:12:28
    此程序用于定时备份文件 1.自动生成日期时间命名的子文件夹,可选 2.可过滤复制文件夹下同名目录或文件。目录被过滤则目录下都不复制。 3.可选择来源文件夹,目标文件夹,使用配置文件配置 customConfig.property...
  • Read me —— 指南 ...可以在博客留言《本地jar包打包到本地仓库》https://blog.csdn.net/wangqingbo0829/article/details/103331622 可以给我发邮件:loginpublic@163.com 你没有看错这确实是我的交流邮箱。
  • activity 编辑器的jar包 项目中不可或缺的jar包 备份一下

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 35,987
精华内容 14,394
关键字:

备份jar包