패키지란? 클래스의 묶음
pakage c.javapakage
예를 들어 String 클래스의 패키지는 java.lang이며 FQCN은 java.lang.String이 된다.
int
, static
)자바에서 java.lang 패키지는 아주 기본적인 것들이기 때문에 import로 불러오지 않아도 자바가 알아서 java.lang의 클래스를 불러온다. 예) String, System
import java.lang.String;
import java.lang.System;
public class Main{
public static void main(String[] args){
String str = this is from java.lang.String";
System.out.println(str);
}
}
💡 모든 클래스는 반드시 하나의 패키지에 포함되어야 한다! → 엇 나는 패키지 선언 안한적 있는데? → 기본적으로 제공하는 ‘이름없는 패키지(unnamed pakage)’ 때문이다.
import 패키지명.클래스명
다른 패키지에 있는 클래스를 찾을때 사용한다.
//import 로 클래스를 선언하지 않으면 -> zmffotm dlfmadp vozlwlaud wjrdjwnjdigka
java.util.Date today = new java.util.Date();
//import 이용하면
import java.util.Date;
Date today = new Date();
클래스 이름을 생략할 수 있다!
System.out.println();
->
import static java.lang.System.out;
out.println();
클래스패스란? 말그대로 클래스를 찾기 위한 경로
JVM이 프로그램을 실행할 때, .class파일을 찾는 데 기준이 되는 파일 경로이다.
java runtime(java 또는 jre)으로 이 .class 파일에 포함된 명령을 실행하려면, 이 파일을 찾을 수 있어야 한다. .class 파일을 찾을 때, classpath에 지정된 경로를 사용한다.
classpath는 .class 파일이 포함된 디렉토리와 파일을 콜론(;)으로 구분한 목록이다.
이 classpath 를 지정하기 위한 방법이다.
윈도우즈에서 다들 한 번씩 환경변수 설정을 해보신 경험이 있을거다.
CLASSPATH=.;C:\Program Files\Java\jdk-10.0.1\lib\tools.jar
컴퓨터 시스템 변수 설정을 통해 지정할 수 있다.JVM이 시작될 때 JVM의 클래스 로더는 이 환경 변수를 호출한다. 그래서 환경 변수에 설정되어 있는 디렉토리가 호출되면 그 디렉토리에 있는 클래스들을 먼저 JVM에 로드한다. 그러므로 CLASSPATH 환경 변수에는 클래스들이 위치한 디렉토리를 등록하도록 한다.
컴퓨터 시스템 변수 설정을 통해 지정할 수 있다.
javac <options> <souce files>
컴파일러가 컴파일 하기 위해서 필요로 하는 참조할 클래스 파일들을 찾기 위해서 컴파일시 파일 경로를 지정해주는옵션
Hello.java
파일이 C:\Java
디렉터리에 존재하고,
필요한 클래스 파일들이 C:\Java\Engclasses
에 위치한다면,
javac -classpath C:\Java\Engclasses C:\Java\Hello.java
로 해주면 된다.
만약 참조할 클래스 파일들이
C:\Java\Engclasses
,C;\Java\Korclasse
, 그리고 현 디렉토리에도 존재한다면,
javac -classpath .;C:\Java\Engclasses;C;\Java\Korclasses C:\Java\Hello.java
.(현재 디렉터리); C:\Java\Engclasses
(디렉터리);C;\Java\Korclasse
(디렉터리);
-classpath → -cp 줄임말 가능
<출처>
https://effectivesquid.tistory.com/entry/
https://kils-log-of-develop.tistory.com/430
https://xxxelppa.tistory.com/200?category=858435