개발모음집

ubuntu16.04에서 java파일과 postgresql을 JDBC로 연결하기 본문

DB/RDBMS

ubuntu16.04에서 java파일과 postgresql을 JDBC로 연결하기

void 2018. 4. 16. 09:00

앱을 만들다가 JavaSocket에서 PostgreSQL과 jdbc로 연결하기로 하였다.


1.  postgresql 홈페이지에서 jdbc driver(postgresql-42.2.2.jar)를 다운받는다.


2. /usr/lib/jvm/java-8-openjdk-amd64/lib에 jar 파일을 옮긴다.


3.  컴파일할 때 자바파일이 있는 경로( ex> /var/www/html/serverSocket/)에서 컴파일과 빌드를 하면 된다.


컴파일 ( '' 와 : 는 빼면 안된다)

$ javac -cp ':(postgresql-42.2.2.jar가 있는 경로)' java 파일명

ex)

$ javac -cp ':/usr/lib/jvm/java-1.8.0-openjdk-amd64//lib/postgresql-42.2.2.jar' ChattingServer.java

빌드

$ java -cp ':(postgresql-42.2.2.jar가 있는 경로)' java 파일명

ex)

$ java -cp ':/usr/lib/jvm/java-1.8.0-openjdk-amd64/lib/postgresql-42.2.2.jar' ChattingServer

해주면 된다.


참고 : stackoverflow


socket에서 Json을 쓰기 위해선 우선 jar 파일을 다운받는다.

나는 postgresql-42.2.2.jar 파일을 '/usr/lib/jvm/java-1.8.0-openjdk-amd64//lib/'에 넣어놨기에 json jar파일 또한 '/usr/lib/jvm/java-1.8.0-openjdk-amd64//lib/'에 넣어놓을 것이다.


컴파일 ( ' 와 : 는 빼면 안된다)

$ javac -cp ':(postgresql-42.2.2.jar가 있는 경로)':':(json-lib-2.4-jdk15.jar가 있는 경로)' java 파일명

ex)

$ javac -cp ':/usr/lib/jvm/java-1.8.0-openjdk-amd64/lib/postgresql-42.2.2.jar':':/usr/lib/jvm/java-1.8.0-openjdk-amd64/lib/json-lib-2.4-jdk15.jar' ChattingServer.java


빌드

$ java -cp ':(postgresql-42.2.2.jar가 있는 경로)'':':(json-lib-2.4-jdk15.jar가 있는 경로)' java 파일명

ex)

$ java -cp ':/usr/lib/jvm/java-1.8.0-openjdk-amd64/lib/postgresql-42.2.2.jar':':/usr/lib/jvm/java-1.8.0-openjdk-amd64/lib/json-lib-2.4-jdk15.jar'  ChattingServer

참고 : stackoverflow


에러 발생

Exception in thread "Thread-0" java.lang.NoClassDefFoundError: org/apache/commons/lang/exception/NestableRuntimeException



commons-beanutils-1.8.3

commons-collections-3.2.1

commons-lang-2.4

commons-logging-1.1.1

ezmorph-1.0


출처:  [아틴 블로그]


예전 글이라 버전이 굉장히 낮음

일일이 다 찾아서 최신으로 다운받아야함


commons-beanutils-=> 다운URL

commons-collections-=> 다운URL

commons-lang- => 다운URL

commons-logging- => 다운URL

ezmorph- => 다운URL





실패한 방법

3. CLASSPATH를 입력해준다. ( 경로 변수들 export 해줘야함 )

$ nano /etc/profile

JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64

export JAVA_HOME

PATH=$PATH:$JAVA_HOME/bin

export PATH

#CLASSPATH=/home/ubuntu:/usr/lib/jvm/java-1.8.0-openjdk-amd64/lib/postgresql-42.2.2.jar

#CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/postgresql-42.2.2.jar

CLASSPATH=/home/ubuntu:/usr/lib/jvm/java-1.8.0-openjdk-amd64/lib

#CLASSPATH=

#export CLASSPATH

참고 : 블로그


4. 환경 변수 저장 

$ source /etc/profile

출처 : 블로그


5. 환경설정확인

$ env | grep JAVA_HOME (환경변수 JAVA_HOME과 PATH 확인)

$ echo $CLASSPATH (환경변수 CLASSPATH 확인)

출처 : 블로그



+참고 

실패한 예제처럼 /etc/profile을 수정하다가 잘안되어서 cp명령어로 컴파일하고 빌드함

/etc/profile 의 파일은 아래와 같이 변경했다. 하지만 결국 다 주석처리하였으니  /etc/prfile에서 CLASSPASS 경로 지정하지 않은 것이다.

즉, /etc/prfile에서 CLASSPASS 경로 지정하지 않고 컴파일, 빌드할 때 명령어로 CLASSPATH를 지정해준 것.


JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64

export JAVA_HOME

PATH=$PATH:$JAVA_HOME/bin

export PATH

#CLASSPATH=/home/ubuntu:/usr/lib/jvm/java-1.8.0-openjdk-amd64/lib/postgresql-42.2.2.jar

#CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/:$JAVA_HOME/lib/postgresql-42.2.2.jar

#CLASSPATH=/home/ubuntu:/usr/lib/jvm/java-1.8.0-openjdk-amd64/lib

CLASSPATH=

#export CLASSPATH




+ 추가 정보

6. JDBC 코드는 이 블로그에서 참고



'DB > RDBMS' 카테고리의 다른 글

nginx rtmp  (0) 2019.01.29
Postgresql PsqlConnect.java  (0) 2019.01.29
Ubuntu 16.04에서 MariaDB 10.2 설치하기, 튜닝  (0) 2018.03.21
UBUNTU16.04에서 MYSQL 5.7 설치하기, 튜닝, 삭제하기  (0) 2018.03.20
MariaDB architecture  (0) 2017.12.18