본문 바로가기



프로그래밍

[JAVA] serverSocket 실습 쉽게 하는 방법. 이클립스를 사용하면 serverSocket 실습시에 자꾸 콘솔이 현재 해당 실행 클래스가 메인으로 전환되기 때문에 서버쪽 정보를 바로 보기가 어렵다. 따라서 이경우는 커맨드 프롬프트나 파워쉘을 띄워서 서버쪽이 메시지를 매번 받는지 확인해보는것이 좋다. 작업표시줄 ->시작 버튼 -> windows 시스템- >명령 프롬프트를 눌러 실행한다 java를 입력했을때 실행되는지 확인한다. 실행되지않는다면 자바 환경변수를 검색해서 설정해준다. 이후에 현재 작업파일이 있는 위치를 확인한다. 이클립스에서 해당 클래스파일에 마우스 오른쪽을 누르면 Properties가 있는데 이것을 누르면 location에 해당경로가 나온다. 이것을 마우스로 끌어서 복사 한 다음 위의 프롬프트창에 cd 한칸 띄고 붙여넣기를하고(윈도우10만.. 더보기
[JAVA] Type mismatch: cannot convert from java.io.InputStream to org.omg.CORBA.portable.InputStream socket.getInputStream(); import java.io.InputStream; 을 import해야한다. org.omg.CORBA 패키지에 있는 항목들을 import하면 안된다. java.io.InputStream패키지를 import한다. 더보기
[JAVA] java.io.InvalidClassException (serialVersion UID) 직렬화 된 객체를 역직렬화 할때 클래스 내용이 변경되면 역직렬화가 실패하기 때문에 (한개 이상의 필드를 더 선언하게 될경우), 일반적으로 serialVer.exe를 사용하여 UID를 생성하여 publci class someOfclassName implemtns Serializable { static final long serialVersionUID = ????????????????????????L; } ... } 위와 같은 코드를 작성하게 되는데 실행시에 Exception in thread "main" java.io.InvalidClassException: 패키지명.클래스명; local class incompatible 에러가 발생하는 경우가 있다. 이 경우는 다른 패키지파일에 동일한 UID가 있을경우이.. 더보기
[JAVA] The constructor BufferedInputStream(FileInputStream) is undefined new BufferedInputStream(input_si_pm_kicked); The constructor BufferedInputStream(FileInputStream) is undefined BufferedInputStream 을 이용하여 파일입력을 받을려 고 하는데 ctrl+shift+o를 해도 import 되지 않고, 임의로 import를 작성해도 에러가 발생되어 곰곰히 찾아보니 해당 클래스 파일의 이름이 또, object이름과 같게해서 일어난 문제였다. IDE에서 패키지명, 클래스명과 동일한 클래스파일 작성시 경고를 내보내면 좋겠는데. 지금까지 딱 두번 이런문제로 시간을 소모한게 안타깝다. 아래 메시지가 현재 상황에서 import를 수동으로 입력하면 나타나는 메시지이다. 한마디로 셋트로 에러.. 더보기
[JAVA] java.io.UncheckedIOException: java.nio.charset.MalformedInputException: 에러 Exception in thread "main" java.io.UncheckedIOException: java.nio.charset.MalformedInputException: Input length = 1 출력되는 에러메시지 자체가 throws IOException처리를 해놔서인지 Unknown Source라고만 나와서 해당 파일을 찾지 못하는것으로 생각하고 파일과 디렉토리를 체크 하는 다음소스를 넣어보았으나 모두 정상적으로 출력되었다. String org_path = System.getProperty("user.dir"); System.out.println("Working Directory = " + org_path); 해당에러는 stream 중 Files.lines(path,Charset.defau.. 더보기
[단상] 286,386등의 오래된 장비를 왜 업그레이드 할 수 없는가? 코딩 강의에서 중반부 이후에 코드를 실습하다보면, 종종 제시된 예시와 다른 결과값을 낼때가 있어서, 이유를 찾아보면 강좌 만들 당시나. 강사의 컴퓨터가 현행 컴퓨터보다 느린 아키텍쳐를 사용할 경우에는 해당 코드를 현재 컴퓨터에서 돌리면 순서대로 작동이 안되는 경우가 드물지 않게 등장한다. 이를테면 1번 작업에 10초 소요되고 나서 2번 작업을 수행해야하는데 요즘 PC들은 워낙 빠르다보니 10초 지나기전에 2번 작업이 수행되어버리는것이다. 중간에 기다리는 코드를 넣으면 해결되겠지만, 짧으면 20년 길면 30년 이상된 프로그램 소스가 있을 가능성은 낮고, 해당 프로그램 제작사 또한 존재할 가능성은 더더욱 낮기 때문. 보통 공장에 납품되는 장비의 경우 장비에 맞춰서 일괄적으로 제작되는 경우가 대부분이기 때문에.. 더보기
[JAVA] No exception of type NumberFormatException can be thrown; an exception type must be a subclass of Throwable 강좌를 수강하다보니 예외처리할때 catch 쪽에 분명 오류코드를 넣었는데 실행되지 않고, 구문 에러가 계속 나오는경우로 해당 코드실행시 나오는 에러문구는 "No exception of type NumberFormatException can be thrown; an exception type must be a subclass of Throwable" 였는데, 내용상으로는 해당 에러는 처리 할 수 없다는 것이였다. 뒷줄에 있는 내용은 서브클래스에 처리가능한 타입이어야 한다는 내용인데 이말인 즉슨, 자바 클래스에 해당 에러처리하는 클래스가 없다는 이야기다. 곰곰이 생각해보면 이상하지 않은가? 자바에서 나오는 에러메시지인데 자바 기본 클래스에 없다니... 그래서 고심끝에 알아낸것은 파일이름이 해당 에러와 같은 .. 더보기
[JAVA] 자바 버전의 선택 가이드 처음 JDK를 설치할때, 초보자들이 흔히 하는 생각중하나가 최신버전이 좋지 않을까? 일것이다. 이는 어느정도 당연한 연역적 추론이지만, 현실은 그렇지 않다. 실제 사용되는 자바 JDK상당수(64%)가 8SE(1.8)인 상황이다. 11버전은 25%정도로 보인다. 이와함께 8버전의 경우 일반 지원은 종료되었지만 유료지원이 2030년까지로 연장된 상태이고 11버전은 예정상으로는 2026년까지 지원된다. 유료 지원을 포함하면 8의 수명이 더 긴것이라고 할 수 있다. 그리고 32비트 버전은 8 버전까지만 정식지원하기 때문에 이점도 고려해야한다. 가끔 스터디 질문을 받다보면, 최신버전을 무조건설치하고 질문하는 경우가 있는데, 전부 삭제하고 1.8이나 11버전을 설치하는것을 추천하며, 특히 한국에서는 1.8 버전을 .. 더보기