반응형

[Java 실습 #24] 해당 class의 jar 파일 경로 추출

 

1. class를 가지고 있는 jar 파일의 경로 추출

2. 개발환경

    2.1. 개발환경

    2.2. 라이브러리

3. 구현

    3.1. 프로젝트 구조

    3.2. 구현 - 소스코드

4. 결과

 

 

1. class를 가지고 있는 jar 파일의 경로 추출

 

 

2. 개발환경

 

2.1. 개발환경

MacOS M1 - macOS Monterey 12.0.1

IntelliJ IDEA 2021.2 (Community Edition)

 

2.2. 라이브러리

JDK 1.8

 

 

3. 구현

3.1. 프로젝트 구조

 

3.2. 구현 - 소스코드

[pom.xml]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
 
    <groupId>io.home.test</groupId>
    <artifactId>test-jar-location</artifactId>
    <version>1.0-SNAPSHOT</version>
 
    <properties>
        <build.jdk.source>8</build.jdk.source>
        <build.jdk.target>8</build.jdk.target>
    </properties>
 
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.6.1</version>
                <configuration>
                    <source>${build.jdk.source}</source>
                    <target>${build.jdk.target}</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.2.2</version>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>io.home.test.Test</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
        </plugins>
    </build>
 
</project>

 

[Test.java]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package io.home.test;
 
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
 
public class Test {
 
    public static void main(String[] args) {
        System.out.println("path: " + getJarFileName(Test.class));
    }
 
    public static String getJarFileName(Class clazz) {
        try {
            String jarFilePath = "" + clazz.getResource("/" + clazz.getName().replace('.''/'+ ".class");
            int sub = jarFilePath.indexOf("!");
            if (sub < 0return null;
 
            jarFilePath = jarFilePath.substring("jar:file:".length(), sub);
            jarFilePath = URLDecoder.decode(jarFilePath, "UTF-8");
            jarFilePath = jarFilePath.replace('\\''/');
            return jarFilePath;
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return null;
    }
}

 

 

4. 결과

mvn clean install

 

java -jar ./target/test-jar-location-1.0-SNAPSHOT.jar

 

 

주의사항

  • Windows os에서 실행시에는 jar 파일 경로를 못 가져올 것으로 예상
반응형