본문 바로가기

Java

get resouce from classloader 주의할점 ClassLoader classLoader = this.getClass().getClassLoader();String filePath = classLoader.getResource("/sample.txt").getPath(); 이런식으로 classpath 경로에 있는 파일을 가져오도록 코드를 짰는데,로컬에서는 잘 되지만 개발 서버에 올리니까 파일이 없다고 에러가 났다.이걸 어찌하나.. 해서 검색해보니 여러 방법이 있었는데 다 실패하고.. File file = ResourceUtils.getFile("classpath:config/sample.txt") 이 방법으로 성공했다.ResourceUtils 클래스는 org.springframework.util 패키지에 있는 클래스인데..getFile 메소드 안을 .. 더보기
자바 클래스패스 파일 load ClassLoader classLoader = getClass().getClassLoader();String filePath = classLoader.getResource("/directory/file.exe").getPath();logger.debug("filePath================"+filePath); 좌측에 소스 폴더 파일들이 우측의 디플로이 패스로 배포된다.classLoader.getResource(파일경로) 메소드로 저 디플로이 패스 하위경로의 파일들을 가져올 수 있다. 더보기
해쉬 이해하기(Java) http://hyeonstorage.tistory.com/265 여기 블로그 보고 작성했습니다. 해쉬 이해하기 쉽게 잘 쓰셨던데 지금은 휴면이라서.. 아쉽더군요. Hash.java public class Hash {// 데이터 저장할 Entry는 값과 다음 Entry를 가지고 있는다.// 해쉬테이블에 저장인덱스가 중복될 경우(충돌발생!) 분리연결법을 사용해 그 인덱스에 연결리스트를 만들어 관리하기 위한것.private class Entry{private int value;public Entry next;}private int size;private Entry[] hTable;// 생성자.. size를 받아서 배열 테이블을 생성한다.public Hash(int size) {this.size = size;t.. 더보기
Spring fileupload maven 이번에 fileUpload 기능 할때 필요할 것 같아서 정리해둔다.이거 기초로 응용해서 쓸 예정. 1. context 에 추가 2. pom.xml 필요한 라이브러리 추가 commons-fileupload commons-fileupload 1.2.1 commons-io commons-io 1.4 3. java@RequestMapping(value = "/upload", method = RequestMethod.POST) public void upload(MultipartRequest request){ MultipartFile file1 = request.getFile("file1"); System.out.println(file1.getName()); System.out.println(file1.getOri.. 더보기
소켓 프로그래밍 실습 갑자기 채팅 프로그램을 짜보고 싶어서, 유투브 보면서 소스 따라하기가 의외로 재미 있어서 놀람. Serverpackage chat1; import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.net.ServerSocket;import java.net.Socket; public class ServerTest {private ServerSocket serverSocket;private Socket clientSocket;private DataInputStream dataInputStream;private DataOutputStream dataOutputStream;public void.. 더보기
프로그래밍은 참 어렵다. 기존에 double 형 변수로 처리하는 로직이 있었는데,처음엔 별 생각 없이 값이 없는 경우 null이 아닌 9999999 같은 쓰레기값(?)을 줘서 사용했다.실제 데이터는 저 범위까지 갈 일이 없었으므로...근데 이게 명백히 따지면 잘못된 로직이지.null이 아닌 쓰레기값이 들어가 있었으니.. 그래서 double 형 변수에 어떻게 null을 할당할까 찾아보니 랩퍼 클래스를 사용하면 된다더군. double a = null; //impossiblejava.lang.Double a = null; //possible https://stackoverflow.com/questions/11047276/null-for-primitive-data-types 생각해보면 처음 공부할때 다 배우는 내용들인데.. 이래서 기초.. 더보기
이클립스 웹프로젝트 톰캣 index.html이 404가 뜨다! 이클립스에서 다이나믹 웹 프로젝트 만든 후 톰캣 연동해서 서버 올리면, 보통 WebContent 폴더나 WebApp 폴더 하위에 있는 index.html 혹은 index.jsp 파일에 바로 접근이 가능하다. (WEP-INF 하위는 당연히 접근 안되고~)그런데 아무리 해도 404가 뜨는게 아닌가... 싶어서 왜 그럴까 했는데... Project -> Properties -> Deployment Assembly 를 보면 서버 올라갈때 컴파일 된 파일들이 배포되는 경로가 설정되어 있다. Source 가 /src/main/webapp(여기가 보통 index.html이 있는 경로) 여기 있는 파일들이 Deploy Path 에 / 로 지정이 되어있어야 했는데 이게 안맞아서 그런 것이었다.... Source 경로가 .. 더보기
apache commons exec 을 이용한 java에서 linux script 실행 보통 linux 쓰면 인터넷 연결된 경우 시간을 알아서 동기화한다.그런데 이 케이스에서는 인터넷 연결이 안 돼서 시간설정을 수동으로밖에 할 수 없는 상황이었다. 일단 시간 설정을 하려면 root 계정으로date -s "2017-01-18 13:00:00"이렇게 입력하면 된다. 내가 생각한건, 1. jsp에서 javascript new Date()로 클라이언트 시간을 가져옴2. 그 시간으로 리눅스 시간 셋팅 요거였고, 여기서 문제가 된건 2번.. java에서 linux 명령어를 입력할 수 가 있나? 하는 것이었다.찾아보니 아파치에서 만든게 있더라. 스프링 기반 웹프로젝트이고, 메이븐을 사용했으므로 일단 pom.xml에 아래와 같이 추가 org.apache.commons commons-exec 1.1 그리고.. 더보기