@참고(TLSv1.3을 지원하는 java version): https://stackoverflow.com/questions/29437596/tlsv1-3-is-it-available-now-in-java-8

@참고(intellij JRE 버전 세팅): https://intellij-support.jetbrains.com/hc/en-us/community/posts/360000104304-Target-JRE-version-does-not-match-project-JDK-version-null- 

 

에러 메세지

Caused by: java.security.NoSuchAlgorithmException: TLSv1.3 SSLContext not available
    at sun.security.jca.GetInstance.getInstance(GetInstance.java:159)
    at javax.net.ssl.SSLContext.getInstance(SSLContext.java:156)

 

조건

0. intellij IDE

1. gradle build

2. sdk version: java 1.8.0_231 

 

해결

1. 일단 TLSv1.3은 java 8u261 로 TLSv1.3이 추가되어 최근에 업데이트 되었다. java version을 그 이상으로 맞춰주어야 한다.

2. intellij의 run, build 의 환경설정에서 잘 맞춰준 jdk를 사용하도록 세팅해주어야 한다.

  2-1. 개발, build 시

File -> Project Settings -> Project -> Project SDK 에서 설정한다. 

적용 후 Modules에 Dependencies를 확인하여 잘 설정되었는지 본다.

  2-2. run 시 

gradle run 하므로

File -> Settings -> Build, Execution, Deployment -> Build Tools -> Gradle -> Gradle JVM 을 잘 맞춰준 jdk로 세팅해준다. 

적용후 run 이 잘되는지 확인해본다.

 

 

블로그 이미지

uchacha

개발자 일지

,

- @참고1(not working): https://kwebtoon.tistory.com/38

- @참고2: https://stackoverflow.com/questions/36329068/bouncycastle-error-jce-cannot-authenticate-the-provider-bc-with-jar-with-depe

 

원인

참고2 에 따르면 Bouncycastle 은 서명되어있어야 하기 때문에, fat jar 로 묶어버리면 서명검증을 할 수 없어서 안되는 것 같다.

 

해결

따라서 해결책으로 maven-shade-plugin으로 별개로 가져가도록 해결하는 것 같다.

 

블로그 이미지

uchacha

개발자 일지

,

@참고: https://stackoverflow.com/questions/11381068/class-not-found-exception-when-running-junit-test/13375775#13375775

 

상황

다른 분이 개발한 server를 eclipse로 가져와서 테스트를 실행하려는데 새로 생성한 helloworld 테스트든, 기존 테스트든 위와 같이 class 를 못찾겠다며 에러를 뿜었다.

maven build 하는 서버라 mvn test 로 command 라인에서는 잘 실행이 되어서 찾아보니 eclipse 에서 maven 으로 가져온 프로젝트의 셋업 문제라고 한다..

 

해결

1. project output folder 경로 찾기

>> Project properties -> Java Build Path -> Default output folder 내용 복사

e.g. test_server/target/classes

 

2. Run -> Run Configuration 으로 가기

 

3. unit test 항목의 run configuration 에서 Classpath 탭을 클릭한다.

 

4. 프로젝트의 User Entries 에 복사한 output folder 를 명시적으로 추가한다.

만약 프로젝트가 이미 포함되어 있더라도 

Advanced -> Add folder 를 통해 복사한 output folder 를 찾아 추가한다.

 

블로그 이미지

uchacha

개발자 일지

,

별 황당한 에러를 다 겪는다..

프로젝트를 클릭하면 내용물이 펼쳐져야 하는데 갑자기 펼쳐지지 않는다.

spring legacy project를 잘 깔았다가 어느순간부터 다시 spring configuration xml만 보이길래 market place에서 spring add on 을 지우고 다시 깔았더니 벌어진 일이다..

 

restart해서 다시 켜보기도 하고

spring add on 을 다시 한번 지우고 깔아보기도 하고..

workspace의 .meta plugin에서 resource 관련 파일을 지워보기도 하고(다른 workspace에서도 동일하게 펼쳐지지 않고 있어서 eclipse 프로그램의 문제이지 workspace 문제는 아닐 것 같긴 했다.)

문제는 해결 안되고..

 

그래서 eclipse를 다시 지우고 깔았더니 펼쳐진다..

뭔 이런 에러가 다있나 싶다.. 

에휴.. 

블로그 이미지

uchacha

개발자 일지

,

- @참고: okky.kr/article/653163

- @참고: aws.amazon.com/ko/premiumsupport/knowledge-center/ec2-linux-resolve-ssh-connection-errors/

 

오류메세지 "Error connecting to [instance], reason: Connection timed out: connect"

인스턴스 연결에 문제가 있고, 요청이 인스턴스에 도달하지 못하고 시간이 초과하였음을 의미합니다. SSH가 인스턴스에서 실행되고 있지 않거나 방화벽이 액세스를 차단하는 경우 이러한 문제가 발생할 수 있습니다.

  • url ip 오류
  • application이 구동 안되고 있을 때
  • 방화벽으로 인해 요청이 application으로 도달을 못할 때

 

오류메세지 "ssh: connect to host ec2-X-X-X-X.compute-1.amazonaws.com port 22: Connection refused"

인스턴스가 연결을 거부했거나 SSH 서비스 데몬이 실행되고 있지 않음을 나타냅니다. 방화벽에서 인스턴스에 대한 액세스를 거부하는 경우에도 이 오류가 발생할 수 있습니다.

  • ip는 연결 되나 port 연결이 안될 때

 

해결방법

  1. 해당 application이 도는 web browser에서 url로 연결 시도해본다. -> application이 구동중인지, url 주소가 맞는지 확인 가능
  2. 1번이 잘 되면 방화벽이 작동하고 있는건 아닌지 확인해본다. 요청 서버에서 web browser로 요청 해본다.
블로그 이미지

uchacha

개발자 일지

,

- @참고: dwfox.tistory.com/25

에러 내역

Caused by: java.lang.UnsupportedClassVersionError: net/sf/ehcache/CacheException : Unsupported major.minor version 52.0 (unable to load class [net.sf.ehcache.CacheException])

해당 에러는 ehchache.jar가 52.0(java 1.8) 버전으로 package 되었는데 JVM을 1.7로 돌리려니 생기는 문제이다.

 

해결

java -version은 1.8로 나왔지만 JAVA_HOME은 1.7로 잡혀있어서 tomcat에서 1.7로 실행을 시키는 듯 했다. 따라서 JAVA_HOME을 1.8로 바꿔주었더니 잘 실행되었다.

 

참고사항

에러 Version 별 JDK 버전

J2SE 8   = Version 52
J2SE 7   = Version 51
J2SE 6.0 = Version 50
J2SE 5.0 = Version 49
JDK  1.4 = Version 48
JDK  1.3 = Version 47
JDK  1.2 = Version 46
JDK  1.1 = Version 45

 

 

블로그 이미지

uchacha

개발자 일지

,

- @참고: zeddios.tistory.com/41

상황

컴파일을 하여 .class 파일을 만든 후 실행하려하니 아래와 같은 에러를 만났다.

오류: 기본 클래스 Main을(를) 찾거나 로드할 수 없습니다.

 

 

해결

java명령으로 class 파일을 실행할 때 패키지의 paranet 디렉터리 위치에서 실행해야 하며,

실행시 패지지명.클래스파일명 으로 인자를 주어야 한다.

따라서 Project > src > com.test.project > Main.java 의 경우

D:\eclipse\project\Project\src>java com.test.project Main

으로 실행해야 한다.

 

참고사항

compile은 컴파일 하고자 하는 java 파일이 있는 곳에서 

- window cmd인 경우

javac -classpath C:\lib\slf4j-api-1.7.25.jar;C:\lib\어쩌구-1.2.3.jar Main.java -d [생성되었으면 하는 위치. package의 parent 폴더까지 적음] -encoding UTF-8

다음과 같이 치면 된다.

- unix 계열이면 classpath를 추가시 ; -> : 를 사용한다고 알고 있는데 package 참조가 잘 되지 않았다.

 

블로그 이미지

uchacha

개발자 일지

,

상황

Eclipse에서 Dynamic Web Project에 Tomcat Server을 등록하여 작업하는 상황이었다.

Maven pom.xml에 lib로 들어있는 클래스의 상위 pom.xml에서 가져온 라이브러리에 대한 중복성을 줄이기 위해 현재 작업중인 프로젝트 pom.xml에서 중복된 lib를 삭제하고 Maven Update 후 Server Run 하였다.

이 때, 상위 lib에 들어있는 클래스를 못가져온다고 발생한 문제이다.

원인

eclipse에 등록된 tomcat server안에 해당 lib가 없어서 발생한 문제였다.

eclipse project 탭에 build automatically가 체크되어있었음에도 잘 작동하지 않았던 듯 하다.

해결

1. 문제 원인이 위와 같은지 확인하는 작업

Servers 탭의 등록된 tomcat server에서 마우스 오른쪽 클릭 -> Browse Deployment Location을 클릭

[Project 명] 폴더 > WEB-INF 폴더 > lib 폴더 > 필요한 lib가 존재하는지 확인한다.

2. 1번에서 필요한 lib가 없었다면 

Servers 탭의 등록된 tomcat server에서 마우스 오른쪽 클릭 -> Clean Tomcat Work Directory 클릭

그래도 해결이 안되면

Servers 탭의 등록된 tomcat server에서 마우스 오른쪽 클릭 -> Clean 클릭

 

블로그 이미지

uchacha

개발자 일지

,