#TIL, Java Study, 패키지

Yimy·2020년 11월 5일
0

Java Study

목록 보기
10/15

22.패키지 ( Package )

: 덩치가 커지면 사용함 그래야 다양한 클래스를 핸들링함.

: 설계자가 나눔. (자바 유틸, 랭 등... 기능별로 나뉜 것.)

비슷한 종류의 '기능' 이나 '업무' 를 가진 클래스와 인터페이스의 묶음.

(1)형태

클래스 최상단에 package 라는 예약어 를 사용한다.

(ex: package soo.aa.bb; ) > 갈수록 패키지 뎁스

안드로이드는 패키지 뎁스가 최소 2개이상 되어야 한다. (의무적으로)

(2) 컴파일

상대 경로 - 현재 디렉토리> javac -d . xxx.java 현재 경로에 패키지 폴더 생성

상대 경로 - 하위 디렉토리> javac -d ./classes A.java ( ,/내가원하는폴더 ) 패키지 폴더 생성

상대 경로 - 상위 디렉토리> javac -d ../ A.java ( 현재 cmd 폴더의 상위폴더에 ) 패키지 폴더 생성

절대 경로> javac -d ((내가 만들고싶은곳 위치 주소)) A.java

(3) 실행

패키지 최상단에서 실행 (내가 지정한 곳의 최상단 soo.aa.bb) ; soo 파일 에서 컴파일 해야 함.

(4) 압축

JDK로 .jar 형식으로 압축해야함.

jar -cvf p.jar (압축할폴더명)

//압축할폴더가 있는 곳에서 실행해야함.

ex) day11/A.java

ex)day11/AUser.java

(5) classpath ( 클래스패스잡기 ),

( == 이클립스 : 빌드패스)

-주소에서는 ;는 무조건 하나만.

-set classpath=.;(패키지파일이있는주소 / 압축한 jar이 있는 곳을 잡거나 / p.jar 있는곳)

1) -classpath ( 유효범위가 가장 적음, javac exe, java.exe )

<1> 디렉토리

: 개발자가 자기가 개발한것을 스스로 쓸때, 이 방법을 주로 씀

(왜냐면 내가 스스로 훼손하지는 않으니까. 이미 만들어지면 jar법을 씀.)

#>javac -classpath C:\SOO\Java\day11\classes AUser.java

#>java -classpath .;C:\SOO\Java\day11\classes AUser

// " . ; " 가 추가 되어야 함.

-디렉토리까지 컴파일 됨.

<2> jar

: 쓰는 이유? 패키지로 그냥 주면, 훼손이 가능하다. (클래스 삭제가 가능하다.)

#>javac -classpath C:\SOO\Java\day11\jar\p.jar AUser.java

#>java -classpath .;C:\SOO\Java\day11\jar\p.jar AUser

2) set classpath 법 ( 유효범위 : cmd )

<1> 디렉토리

set classpath=%classpath%;(주소)AUser.java (%classpath% 라는 변수의 값 가져오는 것== . )

set classpath=.;(주소)AUser.java

#>java AUser

(잡혔는지 확인은 set classpath 하면 지정된 주소가 나옴)

실행은 바로 java AUser해서 가능함. 이렇게 잡힌 classpath는 창을 종료할때까지 유효함.

<2> jar

#>set classpath=%classpath%;C:\SOO\Java\day11\jar\p.jar

#>javac AUser.java

#>java AUser

3) 환경변수 ( 유효범위 : OS에 아예 잡아버림 )

<1>디렉토리

내컴퓨터 > 속성> 환경변수 > classpath에 " .;(주소)"를 저장.

.;C:\SOO\Java\day11\classes

<2> jar

.;C:\SOO\Java\day11\jar\p.jar

cf1) build path ( in elipse )

cf2) javadoc -d ./doc *.java

cf) 이클립스 : 빌드패스 ( Buildpath )

jar 파일을 배포할때, api를 같이 배포해야함. (javadoc -d ./doc(이폴더만든후에) xxx.java

profile
Better version

0개의 댓글