`
ch19880311
  • 浏览: 27519 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

shell脚本批量替换jar包中Class文件

阅读更多

下面是shell脚本批量替换jar包中Class文件

#!/bin/sh

#JAVA home path set
JAVA_HOME=/usr/local/web/fit/WAS/install/61x/java
export PATH=${PATH}:${JAVA_HOME}/bin


#param 1 is jar file path. Sample path: /root/jar/app.jar
appJar=$1

#param 2 is folder path which stores class files. Sample path: /root/classfiles
filesTobeUpdated=$2
tempDir=$filesTobeUpdated/temp

echo "delete temp directory"
if [ -d $tempDir ]
then
   rm -rf $tempDir
fi

echo "create temp file path:"$path
mkdir $tempDir

for i in `ls -l $filesTobeUpdated|grep ^- | awk '{print $9}'`
do
echo "finding file:"$i
path=""
num=0
for j in `jar tf $appJar`
do
if [ `echo $j |grep -c $i` -gt 0 ];then
echo "found file"
path="$path
$j"
num=`expr $num + 1`
if [ $num -eq 1 ];then
pathForNum1=$j
fi
fi
done
echo $num

if [ $num -gt 1 ];then
    fileNum=0
    while [ $fileNum != 1 ]
    do
        echo "$path"
        echo "More than 1 file matched, input filePath:"
        read filePath
        fileNum=`jar tf $appJar $filePath | wc -l`
        #for k in `jar tf $appJar`
        #do
        #    if [ `echo $k |grep -c $filePath` -gt 0 ];then
        #    fileNum=`expr $fileNum + 1`
        #    fi
        #done
    done
    path=$filePath
elif [ $num == 0 ]; then
    echo "Looks like this is newly added file, input filePath:"
    read filePath
    echo $filePath
    path=$filePath
else
    path=$pathForNum1
fi

cd $tempDir
pathCut=$path

while [ `echo $pathCut |grep -c '/'` -gt 0 ]
do
        element=`echo $pathCut | awk -F '/' '{print $1}'`
        if [ ! -d $element ]
        then
           echo "directory is not exist, create:"$element
           mkdir $element
        fi
        cd $element
        pathCut=${pathCut#*/}
        echo "pathCut is:"$pathCut
done
cp -f $filesTobeUpdated/$pathCut $tempDir/$path

cd $tempDir
jar uf $appJar $path

echo "replace done"
done

echo "delete temp directory"
if [ -d $tempDir ]
then
   rm -rf $tempDir
fi

 

0
0
分享到:
评论

相关推荐

    shell脚本的使用步骤及jar包

    Shell脚本是Linux/Unix操作系统中的一个强大工具,它允许用户编写一系列命令并将其作为一个单一的可执行文件。在IT行业中,熟练掌握Shell脚本能够极大地提高工作效率,尤其是在自动化任务和系统管理方面。下面我们将...

    Shell脚本通过Java class文件启停Java程序源码(脚本及源码)

    在开发过程中经常会员到在Linux环境中使用Shell脚本启动和停止java程序的情况,常用的java -jar命令只能运行jar文件...以及程序的启动和停止脚本(非java -jar命令启动,使用shell脚本通过java class文件启停java程序)

    shell脚本启动Java程序测试工程

    在shell脚本中,我们可以创建一个`.sh`文件来封装这个过程。以下是一个简单的示例: ```bash #!/bin/bash # 定义Java主类 MAIN_CLASS="com.example.Main" # 定义Java应用的jar文件名 JAR_FILE="app_demo.jar" # ...

    shell,bat脚本运行java程序

    在Unix/Linux环境中,我们可以创建一个.sh文件作为shell脚本来执行Java程序。首先,确保系统已经安装了Java环境,可以通过`java -version`命令检查。然后,按照以下步骤编写脚本: 1. 使用文本编辑器(如vim、nano...

    命令行下制作可导入项目执行的JAR包.pdf

    6. Windows批处理文件(.bat)和Linux Shell脚本:文件中提到了使用Windows批处理和Shell脚本来执行打包过程,这些脚本可以包含命令行指令,以自动化打包过程。 7. CLASSPATH环境变量:在执行Java程序时,JVM会查找...

    教你如何打jar包讲解及例子

    2. **使用启动器脚本**:如果你的程序需要在没有JRE的环境下运行,可以创建一个批处理脚本或shell脚本,先下载并启动JRE,然后运行JAR。 总的来说,打包JAR文件是Java开发中必不可少的技能,无论你是个人开发者还是...

    jar包的手动生成方法

    在Java开发中,`jar`包是经常被用到的一种文件格式,它将多个`.class`文件以及相关的资源文件打包成一个单独的文件,便于管理和分发。本文将详细介绍如何手动创建`jar`包,包括必要的步骤、命令行操作以及注意事项等...

    jar打包,jar打包

    这段XML脚本定义了一个名为`jar`的目标,使用`<jar>`元素创建名为`myapplication.jar`的JAR文件,并将`classes`目录下的所有`.class`文件添加进去。 #### 四、多主类的应用程序处理 有些情况下,一个应用程序可能...

    java 启动jar

    这是一个Unix/Linux shell脚本,可能包含以下内容: ```bash #!/bin/bash JAVA_HOME=/path/to/your/java JAR_FILE=path/to/your/app.jar $JAVA_HOME/bin/java -jar $JAR_FILE arg1 arg2 ``` 这个脚本指定了`JAVA_...

    linux上通过sh方式启动java jar程序并做为守护进程

    首先,我们需要创建一个shell脚本,例如`test.sh`,来执行我们的任务。这个脚本将包含必要的指令来启动Java JAR程序,并确保它能够在后台运行。以下是一个基本的`test.sh`脚本模板: ```bash #!/bin/bash # 指定...

    shell java

    - `-jar`选项可以运行包含`Main-Class`属性的`MANIFEST.MF`文件的JAR包,例如:`java -jar myapp.jar`。 3. **在Shell脚本中执行Java**: - 在`run.sh`或`startup.sh`这样的脚本中,可以写入`java`命令行来启动`...

    java的jar包们

    2. 通过批处理脚本或Shell脚本:将`java -jar`命令包装在脚本中,方便执行。 四、JAR文件的用途 1. 分发Java应用:将所有依赖打包成一个可执行的JAR,用户只需点击运行即可。 2. 库的封装:开发者可以将自定义的...

    创建jar

    2. **MANIFEST.MF**:这是JAR文件内的关键文件,包含了JAR的基本信息,如主类(Main-Class)信息,决定了JAR文件是否可以直接运行。 3. **优点**:JAR文件提供了类的封装和版本控制,便于模块化开发和部署;同时,...

    Sh编辑的java运行脚本.zip

    "Sh编辑的java运行脚本.zip"文件很可能包含了一个或多个用于在Unix/Linux环境下启动Java应用程序的Shell脚本,因为".sh"文件通常是Shell脚本的扩展名。在Unix/Linux系统中,这些脚本用作解释器指令,告诉操作系统...

    使用Linux-Shell转换PDF文件为图片(DEMO源码)

    本示例提供了一种使用Shell脚本和Java工具实现这一功能的方法。以下是关于这个话题的详细知识: 首先,我们需要理解PDF和图片格式的区别。PDF(Portable Document Format)是一种用于保存文档格式的文件,它保持了...

    Shell执行/调用Java/Jar程序例子的实例详解

    本文主要介绍了如何使用Shell执行/调用Java/Jar程序的实例详解,通过三个步骤:Java程序、Shell脚本和ANT Xml代码,实现了一个独立的Java程序去监控Hadoop和Oozie。 一、Java程序 在Java程序中,我们可以编写一个...

    dex2jar最新包 及源码

    1. **d2j-dex2jar.sh**:这是一个Shell脚本,它是dex2jar的命令行界面。用户可以通过运行这个脚本来执行.dex到.jar的转换操作。通常,你只需提供.dex文件的路径作为参数,脚本就会自动处理转换过程。 2. **d2j-dex2...

    java打包并生成可执行文件步骤

    记得给批处理文件或shell脚本赋予执行权限: ``` chmod +x run.sh ``` 5. **使用构建工具** 在大型项目中,手动打包可能变得复杂,这时可以使用Maven或Gradle等构建工具。在Maven的`pom.xml`中添加以下配置来...

    APK一键反编译工具,包括XML,CLASS

    1. `setclasspath.bat` 和 `setclasspath.sh`:这是批处理脚本和Shell脚本,用于设置运行环境的类路径,确保所有必要的库都可被工具找到。 2. `dex2jar-dump.bat` 和 `dex2jar-dump.sh`:这两个脚本可能用于从DEX...

Global site tag (gtag.js) - Google Analytics