패키지+클래스명
이다.FQCN (Fully Qualified Class Name)
모든 클래스에는 정의된 클래스 이름과 패키지 이름이 있고, 이 둘을 합쳐야 완전하게 한 클래스를 표현할 수 있다.
ex) String 클래스의 패키지는 "java.lang" 이며 FQCN은 "java.lang.String"이 된다.
상위패키지.하위패키지.클래스
import java.util.*;
import java.sql.*;
// 2개의 패키지에 모두 Date라는 이름의 클래스가 존재
// 어떤 패키지에 존재하는 Date인지 명시해주지 않았기 때문에 컴파일 에러를 발생시킴.
Date today; // ERROR-- java.util.Date or java.sql.Date?
import java.util.Date;
import java.sql.*;
java.util.Date deadLine = new java.util.Date();
java.sql.Date today = new java.sql.Date();
package 상위패키지.하위패키지;
public class ClassName{ ... }
java.lang
: language support 클래스들을 포함하는 패키지java.lang
의 String 클래스java.lang
의 System 클래스java.io
: 입출력 기능을 지원하는 클래스들을 포함하는 패키지java.util
: 자료 구조 구현을 위한 유틸리티 클래스를 포함하는 패키지java.applet
: Applets을 생성하기 위한 클래스들을 포함하는 패키지java.awt
: GUI 컴포넌트를 구현하기 위한 클래스들을 포함하는 패키지java.net
: 네트워킹 기능을 지원하기 위한 클래스를 포함하는 패키지// 패키지 이름은 파일이 저장된 디렉토리의 이름과 반드시 같아야 함
package myPackage;
public class MyClass{
public void getNames(String s){
System.out.println(s);
}
}
// myPackage에 존재하는 `MyClass` 클래스를 import해서 사용할 수 있다.
import myPackage.MyClass;
public class PrintName{
public static void main(String args[]){
String name = "Pikachu";
MyClass mc = new MyClass();
mc.getNames(name);
}
}
-classpath(cp) path(파일 절대 경로)
package javabasic.week7;
class RequiredClass{
public void print(String s){
System.out.println(s);
}
}
public class ClasspathDemo {
public static void main(String[] args) {
RequiredClass rc = new RequiredClass();
rc.print("classpath test");
}
}
C:\IdeaProjects\JavaStudy\src\main\java\javabasic\week7>javac ClasspathDemo.java
C:\IdeaProjects\JavaStudy\src\main\java\javabasic\week7>dir
2021-01-01 오후 03:54 <DIR> .
2021-01-01 오후 03:54 <DIR> ..
2021-01-01 오후 03:54 411 ClasspathDemo.class
2021-01-01 오후 03:53 300 ClasspathDemo.java
2021-01-01 오후 03:54 405 RequiredClass.class
RequiredClass 클래스 파일을 lib 디렉토리로 이동시킨 후 실행한다면?
java ClasspathDemo
결과 : equiredClass.class가 현재 디렉토리에 존재하지 않기 때문에 에러 발생
Exception in thread "main" java.lang.NoClassDefFoundError: RequiredClass at ClasspathDemo.main(ClasspathDemo.java:9)
해결 : lib 디렉토리에서 찾아서 실행시켜준다.
java -classpath ".:lib" ClasspathDemo
.
: 현재 디렉토리에서 클래스를 찾는다:
: 현재 위치(.)에 찾는 파일이 없다면 다음 하위 디렉토리인 lib로 가서 찾는다는 의미
(맥은 콜론(:), 윈도우에서는 세미콜론(;))
ref.
https://gintrie.tistory.com/67
https://ahnyezi.github.io/java/javastudy-7-package/
https://www.notion.so/ed8e346f88f54849a06ff968b1877ca5
https://jjunbbang.tistory.com/8