티스토리 뷰

728x90
반응형

 포스팅에서는 특정 class를 포함한 jar 를 찾는 가이드입니다.


특정 class가 어느 library에 포함되어있는지 확인하고자 할때 참고하시기 바랍니다. 

시나리오

 WildFly modules 내에서 org/wildfly/common/net/HostName class를 가지고 있는 jar 찾기

1.먼저, WildFly modules 디렉토리 내에 위치한 모든 jar들을 한곳에 모아야 찾기 쉬울것입니다. 따라서 FindClass라는 디렉토리를 하나 생성해보겠습니다.

[wildfly@k8s-worker~/wildfly13$]mkdir FindClass 

2.다음으로 modules 디렉토리 내의 모든 jar를 찾아서 allclass.sh 파일에 모아보겠습니다.

[wildfly@k8s-worker~/wildfly13$]find ./modules "*.jar" > findclass.sh 

3.findclass.sh는 아래와 같이 확인됩니다.

./modules/system/layers/base/asm/asm/main/asm-6.0.jar

./modules/system/layers/base/ch/qos/cal10n/main/cal10n-api-0.8.1.jar

./modules/system/layers/base/com/fasterxml/classmate/main/classmate-1.3.4.jar

./modules/system/layers/base/com/fasterxml/jackson/core/jackson-annotations/main/jackson-annotations-2.9.5.jar 

./modules/system/layers/base/com/fasterxml/jackson/core/jackson-core/main/jackson-core-2.9.5.jar 

./modules/system/layers/base/com/fasterxml/jackson/core/jackson-databind/main/jackson-databind-2.9.5.jar

./modules/system/layers/base/com/fasterxml/jackson/datatype/jackson-datatype-jdk8/main/jackson-datatype-jdk8-2.9.5.jar 

./modules/system/layers/base/com/fasterxml/jackson/datatype/jackson-datatype-jsr310/main/jackson-datatype-jsr310-2.9.5.jar 

....

4.이 findclass.sh 내에서 확인되는 jar파일을 FindClass 디렉토리에 모아보겠습니다.

before)

./modules/system/layers/base/asm/asm/main/asm-6.0.jar 

After)

cp ./modules/system/layers/base/asm/asm/main/asm-6.0.jar Find/

vi 편집기 명령어는 다음과 같습니다. (특수문자의 경우 '\'역슬러시와 함께 사용해야 인식됩니다)

 %s/기존내용/변경하고자하는내용/g

예) :%s/\.\//cp \.\//g

5.변경 완료된 allclass.sh는 아래와 같이 확인됩니다.

cp ./modules/system/layers/base/asm/asm/main/asm-6.0.jar ./FindClass

cp ./modules/system/layers/base/ch/qos/cal10n/main/cal10n-api-0.8.1.jar ./FindClass

cp ./modules/system/layers/base/com/fasterxml/classmate/main/classmate-1.3.4.jar ./FindClass

cp ./modules/system/layers/base/com/fasterxml/jackson/core/jackson-annotations/main/jackson-annotations-2.9.5.jar  ./FindClass

cp ./modules/system/layers/base/com/fasterxml/jackson/core/jackson-core/main/jackson-core-2.9.5.jar ./FindClass 

cp ./modules/system/layers/base/com/fasterxml/jackson/core/jackson-databind/main/jackson-databind-2.9.5.jar ./FindClass

cp ./modules/system/layers/base/com/fasterxml/jackson/datatype/jackson-datatype-jdk8/main/jackson-datatype-jdk8-2.9.5.jar ./FindClass 

cp ./modules/system/layers/base/com/fasterxml/jackson/datatype/jackson-datatype-jsr310/main/jackson-datatype-jsr310-2.9.5.jar  ./FindClass

....

6.allclass.sh을 실행하면 FindClass 디렉토리 내부에 .jar파일들이 이동합니다.

7.아래 findclass.sh을 추가로 작성하여 FindClass 디렉토리 내부에 위치시킵니다. 

#! /bash/sh

LIST=`ls -l *.jar | awk ''`

for JAR in $

do

        echo "==================="

        echo $JAR

        echo "==================="

        jar -tvf $JAR | awk '' | grep $1

done

 

8.아래와 같이 실행합니다.

 [wildfly@k8s-worker~/wildfly13$]sh findclass.sh [찾고자하는 class]

9.아래와 같이 wildfly-common-1.4.0.Final.jar 안에 찾고자하는 class가 있음이 확인됩니다. 

 [wildfly@k8s-worker~/wildfly13$]sh findclass.sh org/wildfly/common/net/HostName.

..

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

wildfly-clustering-web-undertow-13.0.0.Final.jar

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

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

wildfly-cmp-13.0.0.Final.jar

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

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

wildfly-common-1.4.0.Final.jar

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

org/wildfly/common/net/HostName.class

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

wildfly-configadmin-13.0.0.Final.jar

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

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

wildfly-connector-13.0.0.Final.jar

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

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

wildfly-controller-5.0.0.Final.jar

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

 

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

......

 

고맙습니다.

728x90
반응형