반응형

1. 시험환경

    ˙ 윈도우

    ˙ IntelliJ Community

 

2. 목적

    ˙ Springboot 프로젝트를 구성 및 최초 실행 시 발생하는 아래 에러를 해결한다.

Execution failed for task ':TemplateApplication.main()'.
> Process 'command 'C:/Program Files/Java/jdk-17.0.5/bin/java.exe'' finished with non-zero exit value 1

 

3. 적용

    ① SpringBoot 프로젝트 구성, IntelliJ 임포트 및 실행하는 방법은 아래 내용을 참고한다.

        - 참고 : 

 

    ② Springboot 프로젝트를 IntelliJ로 최초 실행 시 아래와 같은 에러가 발생할 수 있다.

 

    ③ [File] → [Settings...] 메뉴를 클릭한다.

        - 단축키 : <Ctrl> + <Alt> + <S>

 

    ④ IntelliJ IDEA로 변경한다.

 

반응형
반응형

1. 시험환경

    ˙ JDK 17.0.5

    ˙ IntelliJ

 

2. 목적

    ˙ JAVA 코드를 이용하여 WGS84(lat, lng) 형식의 지점 간 거리 측정 코드를 작성한다.

    ˙ 구글지도에서 두 지점 간 거리 계산 기능과 작성한 코드를 비교하여 유효성을 확인한다.

 

3. 적용

    ① double로 정의된 두 지점 간 직선 거리를 계산하여 반환하는 메소드

        - lat1 : 지점1 위도

        - lon1 : 지점1 경도

        - lat2 : 지점2 위도

        - lon2 : 지점2 경도

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class Wgs84 {
 
    public double distance(double lat1, double lon1, double lat2, double lon2) {
        final int R = 6371// Radius of the earth
 
        Double latDistance = toRad(lat2 - lat1);
        Double lonDistance = toRad(lon2 - lon1);
        Double a = Math.sin(latDistance / 2* Math.sin(latDistance / 2+
                Math.cos(toRad(lat1)) * Math.cos(toRad(lat2)) *
                        Math.sin(lonDistance / 2* Math.sin(lonDistance / 2);
        Double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
 
        return R * c;
    }
 
    private static Double toRad(Double value) {
        return value * Math.PI / 180;
    }
}
 
cs

 

    ② Main 메소드에서 distance()를 호출한다.

1
2
3
4
5
6
7
8
9
10
public class Main {
    public static void main(String[] args) {
        double lat1 = 37.4857, lng1 = 127.1216;
        double lat2 = 37.5226, lng2 = 126.9051;
 
        Wgs84 wgs84 = new Wgs84();
        double dist = wgs84.distance(lat1, lng1, lat2, lng2);
        System.out.println(String.format("Distance = %f", dist));
    }
}
cs

 

    ③ 소스코드 다운로드

Example.zip
0.00MB

 

4. 결과

    ˙ 입력한 두 지점 간 거리는 구글지도에서 19.54km

 

    ˙ 콘솔 로그 확인 결과, 구글지도 수동입력 오차를 감안하면 쓸만한 코드임을 확인할 수 있다.

1
2
3
Distance = 19.533678
 
Process finished with exit code 0
cs

 

 

※ 내용이 도움 되셨다면 광고 클릭 한번 부탁드립니다 ※

반응형
반응형

1. 시험환경

    ˙ Jdk-17.0.5

    ˙ IntelliJ

 

2. 목적

    ˙ 특정 폴더 하위에 있는 모든 폴더를 순회하면서 파일을 삭제하는 코드를 작성한다.

 

3. 적용

    ① 테스트 대상 폴더 구조 및 임시 파일이 있다.

        - files : a.txt, b.txt

        - files\subFolder1 : c.txt, d.txt

        - files\subFolder1\subFolder2_1 폴더: e.txt

        - files\subFolder1\subFolder2_1 폴더: gf.txt, h.txt, i.txt

 

    ② 재귀함수를 호출하면서 하위 폴더에 있는 모든 파일을 File 클래스 내장 메소드를 이용하여 삭제한다. 

        - .isFile() : 파일 여부

        - .isDirectory() : 디렉토리 여부

        - .delete() : 삭제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.io.File;
 
public class FileControl {
    static void deleteFiles(String _targetDir) {
 
        File path = new File(_targetDir);
        File[] fList = path.listFiles();
 
        if (fList != null) {
            for(int i = 0; i < fList.length; i++) {
                if(fList[i].isFile()) {
                    fList[i].delete();
                    System.out.println(String.format("%s is deleted...", fList[i].getPath()));
                }
                else if(fList[i].isDirectory()) {
                    deleteFiles(fList[i].getPath());
                }
            }
        }
    }
}
 
cs

 

    ③ 대상 폴더를 지정하고 Main 클래스에서 테스트한다.

1
2
3
4
5
6
7
8
public class Main {
    private static String targetFolder = "D:/workspace-java/files";
 
    public static void main(String[] args) {
        FileControl fileControl = new FileControl();
        fileControl.deleteFiles(targetFolder);
    }
}
cs

 

    ④ 프로그램 코드

Example.zip
0.00MB

 

4. 결과

    ˙ 로그에서 삭제된 파일 목록을 확인한다.

1
2
3
4
5
6
7
8
9
10
11
D:\workspace-java\files\a.txt is deleted...
D:\workspace-java\files\b.txt is deleted...
D:\workspace-java\files\subFolder1\c.txt is deleted...
D:\workspace-java\files\subFolder1\d.txt is deleted...
D:\workspace-java\files\subFolder1\subFolder2_1\e.txt is deleted...
D:\workspace-java\files\subFolder1\subFolder2_2\f.txt is deleted...
D:\workspace-java\files\subFolder1\subFolder2_2\gf.txt is deleted...
D:\workspace-java\files\subFolder1\subFolder2_2\h.txt is deleted...
D:\workspace-java\files\subFolder1\subFolder2_2\i.txt is deleted...
 
Process finished with exit code 0
cs

 

 

 

※ 내용이 도움 되셨다면 광고 클릭 한번 부탁드립니다 ※

반응형
반응형

1. 시험환경

    ˙ SpringBoot

 

2. 목적

    ˙ SpringBoot 프로젝트에 MariaDB 연동 설정한다.

 

3. 적용

    pom.xml 설정

1
2
3
4
5
6
7
8
9
10
11
12
13
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
    <groupId>org.mariadb.jdbc</groupId>
    <artifactId>mariadb-java-client</artifactId>
    <scope>runtime</scope>
</dependency>
cs

 

 

     application.properties 설정

1
2
3
4
5
6
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.datasource.url=jdbc:mariadb://localhost:포트/DB명
spring.datasource.username=계정
spring.datasource.password=비밀번호
 
spring.jpa.show-sql=true
cs

 

 

※ 내용이 도움 되셨다면 광고 클릭 한번 부탁드립니다 ※

반응형
반응형

1. 시험환경

    ˙ JAVA

    ˙Files.walk() 함수

 

2. 목적

    ˙ 주어진 경로에 존재하는 파일을 리스트에 추가한다.

    ˙ 주어진 문자열이 포함된 파일명만 추출한다.

 

3. 적용

    ① 예제코드

        - _path : 검색할 경로명

        - _name : 파일명에 포함된 문자열

1
2
3
4
5
6
7
8
9
public List<Path> getFile(String _path, String _name) throws IOException {
 
    Path dirPath = Paths.get(_path);
    Stream<Path> walk = Files.walk(dirPath);
 
    return walk.filter(Files::isRegularFile)
                .filter(p -> p.getFileName().toString().equalsIgnoreCase(_name))
                .collect(Collectors.toList());
}
cs

 

4. 결과

    ˙ 출력결과

 

 

 

※ 내용이 도움 되셨다면 광고 클릭 한번 부탁드립니다 ※

반응형
반응형

1. 시험환경

    ˙ STS(Spring Tool Suite) 4

    ˙ Spring MVC Project

 

2. 목적

    ˙ DB에서 읽어온 데이터를 VO 객체의 리스트형태로 담아서 View로 전달한다.

    ˙ View에서 전달된 데이터를 JSTL 태그를 이용하여 출력한다.

 

3. 적용

    ① DB 샘플 데이터를 다음과 같이 만들어 두었다.

DB 예제 데이터

 

    ② DB데이터를 컨트롤러에서 처리한 후 View로 전달한다.

        - DB에서 불러온 데이터는 excerciseVoList 변수에 저장된다.

        - excerciseVoList 변수를 모델 객체에 넣어서 View(default.jsp)로 반환한다.

컨트롤러 데이터 처리 영역

 

    ③ jsp에 JSTL 태그를 추가하고 반복문을 이용하여 전달받은 객체를 출력한다.

        - jstl taglib 추가 : <%@ taglib prefix="c" uri="http://java.sun.cim/jsp/jstl/core">

전달받은 객체 데이터 출력

 

4. 결과

    ˙ 읽어온 DB 데이터가 View까지 전달되어 출력되는 것을 확인할 수 있다.

결과 확인

 

 

※ 내용이 도움 되셨다면 광고 클릭 한번 부탁드립니다 ※

반응형
반응형

1. 시험환경

    ˙ 윈도우 10

    ˙ 스프링 프레임워크 MVC

    ˙ MyBatis

 

2. 목적

    ˙ Mybatis에서 Where절 파라미터 입력 방법을 알아보자.

 

3. 적용

    ① 서비스 객체로 부터 전달 받은 매개변수를 MyBatis(xml 파일)에서 ${param} 이라는 파라미터로 사용하였다.

        - There is no getter for property named 'param' in 'class.java.lang.Integer'

컴파일 에러

 

    ② 서비스에서 전달받은 scnId를 "getEntityTbl"라는 Mybatis ID 호출과 동시에 매개변수로 전달하였다.

서비스에서 마이바티스 호출

 

4. 결과

    ˙ Mybatis에서 전달 받은 매개변수를 ${param} 대시 ${value}로 설정하여 해결하였다.

마이바티스에서 전달 받은  파라미터 참조

 

 

※ 내용이 도움 되셨다면 광고 클릭 한번 부탁드립니다 ※

반응형
반응형

1. 시험환경

    ˙ 윈도우 10
    ˙ STS(Spring Tool Suite) 4

 

2. 목적

    ˙ Archive File 형식으로 Export한 프로젝트 파일이 있을때, (languagestory.tistory.com/21)

    ˙ 다른 PC 또는 다른 작업환경으로 Import 하는 방법을 알아본다.

 

3. 적용

    ① STS 실행 후 Workspace를 선택한다.

워크스페이스 지정

 

    ② STS가 실행되면, Import Projects...를 클릭한다.

Import projects

 

    ③ Import 팝업창에서 Existing Projects into Workspace를 클릭한다.

        - 압축파일(프로젝투 파일)을 현재 Workspace로 임포팅한다.

프로젝트를 현대 워크스페이스로 임포팅

 

    ④ 프로젝프 추출 파일을 선택하고 <Finish> 버튼을 클릭한다.

프로젝트 추출 파일 선택

 

    ⑤ STS 우측 하단에 프로젝트가 Importing 되는 상태가 나타나며, 100% 까지 기다린다.

프로젝트 임포팅

 

4. 결과

    ˙ 프로젝트를 빌드&실행하여 동작 여부를 확인한다.

 

 

 

※ 내용이 도움 되셨다면 광고 클릭 한번 부탁드립니다 ※

반응형

+ Recent posts