【问题标题】:How to update jar file inside ear file如何更新ear文件中的jar文件
【发布时间】:2017-12-02 06:04:18
【问题描述】:

要更新 jar 文件添加一个类,我可以使用它: 罐子-uvf

但是我需要更新一个ear文件中的jar文件,我尝试了下面的命令但它没有工作: jar -uvf NameOfEarfile.ear:FolderName/NameOfJar.jar 路径/NameOfClass.class

有人可以帮我吗?

【问题讨论】:

  • 最好重新打包EAR。
  • 我需要在一台 unix 服务器上执行此操作,并且我想在测试修复时只添加一个类。

标签: java jar ear


【解决方案1】:

更好的方法是使用 7zip 软件。

【讨论】:

  • 我需要在一台 unix 服务器上执行此操作,并且我想在测试某些修复时只添加一个类。
【解决方案2】:

以下是更新 ear/war/zip/jar 文件的代码。在执行以下代码之前,首先将文件转换为 unix 格式。

将以下代码复制到 TestUpdate.sh 文件并复制到 unix 服务器。然后使用以下命令。确保 TestUpdate.sh、类文件(您要复制到 EAR/WAR/ZIP/jar 中)和 EAR/WAR/ZIP/jar 文件都在同一个目录中。

dos2unix TestUpdate.sh
. ./TestUpdate.sh FileNameWhichYouWantToUpdate # EAR/WAR/JAR/ZIP filename

#!/bin/bash

#LearName='TEST.ear'
LearName=$1
jar xf $LearName
for clas in *.class
do                    
  echo "Checking for $clas ..."
  for f in *.jar
    do
      result=$(jar tf $f | grep -w $clas)
      if [ -n "$result" ]; then
        echo "$f contains $result"

        Lp="${#clas}";
        Lr="${#result}";
        count=$((Lr-Lp));
        #echo $count
        dirC=${result:0:$count};
        echo "Directory $dirC"
        echo $dirC
        mkdir -p $dirC;
        echo "Copying $clas $dirC"
        cp $clas $dirC;
        echo "updating $f ..."
        jar ufv $f $result;
        file_write "updating $f ..."
        echo "Updating $LearName ..."

        jar ufv $LearName $f;
        echo "-----------------------------------------------"

        break
      fi                                             
    done
done    
rm -f *.jar ---- comment this line if your input file is .jar. If your input file is EAR/WAR/ZIP file then NO need to comment this line
rm -r *.war
rm -r META-INF
rm -f *.tmp
rm -r com

【讨论】:

    猜你喜欢
    • 2021-12-16
    • 2015-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-12
    • 1970-01-01
    • 2013-02-18
    相关资源
    最近更新 更多