분명 클래스 별로 main 메서드를 실행했기에 앞에서 문제가 없었고,

전혀 상관이 없는 클래스를 돌리는데 문제가 생겼다.

추측컨대 동일한 클래스이름 동일한 클래스파일들이 테스트한다고

여기저기 패키지안에 담아 두어서 그런지 오류가 생긴듯 했다.. 

 

에러는 다음과 같다.

-Duplicate key /패키지/클래스이름.java

-디테일하게 확인해보니 " Build cache is disabled "

-compile 에러가 출력이 되었다.

 

해결순서

1. 관련된 클래스를 모두 지워 주었다.

2. 컴파일된 .클래스 파일을 모두 삭제 했다.

3. https://jobc.tistory.com/207 여기에 나온대로 IntelliJ Cache를 삭제를 해보았으나 실패

4. https://www.inflearn.com/questions/171043 누군가가 인프런에 질문 올린 내용을 참고했다..

   재부팅후에 build내에 있는 파일을 모두 삭제하라고 답변을 달았고,

   build 파일 안에 찾아 보니 source-classes-mapping 파일이 보였다.

   열어보니 앞에서 삭제했었던 관련된 클래스들이 안에 있었고 그 관련된 클래스를 삭제해주었다.

5. 다시 돌리니 제대로 오류없이 돌아간다.

 

트러블슈팅하느라 너무 시간이 오래 걸렸다.. 해결되어서 다행이지만, 다음 공부내용을 더 공부하지 못해 속상하다..

자바에서 작성한 코드가 컴파일되어 실행되기까지의 과정을 피상적으로만 알고 있어
실제로 main메서드가 실행되는 과정을 알고 싶어 정리해봅니다.

main() 메서드
- 프로그램이 실행되는 시작점

 

main()메서드가 실행되기전에 JRE와 JVM에서 일어나는 일들

1. JRE(Java RunTime Environment)
-프로그램에 main() 메서드가 있는지 확인한다.
-main() 메서드가 있는지 확인이 되면, 프로그램 실행을 위해 JVM에 전원을 넣어 부팅한다.

2. JVM이 목적파일을 실행하기 위해 하는 과정
-java.lang패키지를 T메모리의 스태틱 영역에 배치
-import된 패키지를 T메모리의 스태틱 영역에 배치
-작성된 모든 클래스를 T메모리의 스태틱 영역에 배치
* JVM 하는일
-목적파일을 받아 목적파일을 실행한다.

3. 스택영역 및 args인자를 저장할 변수공간 스택 프레임
-여는중괄호(main메서드의 "(")가 있을시에 하나씩 생성됨 T메모리에 스택프레임 스택영역 할당
-main메서드의 인자 args를 저장할 변수공간 스택 프레임의 밑에 생성
-그리고 main메서드의 첫 명령문 실행

4. main메서드 실행이 종료되면
-JRE는 JVM을 종료, JRE자체도 OS상의 메모리에서 사라지고, T메모리도 생명주기가 끝남.

데이터를 불러오기 위한 API개발이 많았다.

 

당연한 것이지만,

API개발시 고려해야 할 부분은 크게 2가지이었다.

 

1. 파라미터 값을 고려할 때에 지금 보내는 파라미터만으로도 원하는 데이터가 출력이 되는지를 고려

 

2. 화면흐름상 예를 들어 게시글 수정일 때에 가장 핵심이 되는 id(파라미터)외에 불필요한 파라미터가 있는지를 고려

 

사실 쿼리도 중요했지만, 이 파라미터를 던졌을 때 원하는 데이터 또는 값들이 나와야 하는 것이 핵심이었기에

기초적이지만 중요했던 고려사항 2가지이다..

+ Recent posts