서노썬
sun noes sun
서노썬
전체 방문자
오늘
어제
  • 카테고리 (142)
    • Java (89)
      • Day1 (20)
      • Day2 (16)
      • Day3 (4)
      • Day4 (5)
      • Day5 (2)
      • Day6 (2)
      • Day7 (4)
      • Day8 (6)
      • Day9 (3)
      • Day10 (0)
      • Day11 (0)
      • Day12 (0)
      • Day13 (3)
      • Day14 (0)
      • Day15 (0)
      • Day16 (0)
      • Day19 (0)
      • Day20 (0)
      • Day21 (2)
      • Day22 (4)
      • Day23 (2)
      • Day24 (5)
      • Day25 (4)
      • Day27 (2)
      • Day28 (3)
      • Day29 (1)
      • Day30 (1)
      • Day31 (0)
      • Day32 (0)
      • Dat33 (0)
      • Day34 (0)
      • Day35 (0)
      • Day36 (0)
    • HTML (37)
      • Day36 (20)
      • Day37 (3)
      • Day38 (2)
      • Day39 (8)
      • Day40 (3)
    • SQL (4)
      • Day40 (4)
      • Day41 (0)
      • Day42 (0)
      • Day43 (0)
      • Day44 (0)
      • Day45 (0)
    • JSP (0)
      • Day46 (0)
      • Day75 (0)
    • PYTHON (0)
      • Day75 (0)
      • Day76 (0)
    • Photo (12)

블로그 메뉴

  • 홈
  • 방명록

인기 글

최근 글

태그

  • java메뉴입력
  • 자바자료형
  • 자바break
  • java자료형
  • 자바연산자
  • java데이터타입
  • 논리연산자
  • 자바continue
  • Java
  • 자바

티스토리

hELLO · Designed By 정상우.
서노썬

sun noes sun

[Java] class path 클래스 패스 & 패키지 (배치 프로그램 실행하기)
Java/Day7

[Java] class path 클래스 패스 & 패키지 (배치 프로그램 실행하기)

2021. 11. 7. 23:27

1. public 클래스의 문법적인 특징

 

(1) public 클래스명과 자바 파일명의 이름은 대소문자 하나까지 똑같아야 한다.

 

public class Test{}

> 자바파일명을 'Test.java'으로 할 경우 문법적으로 이상없다.

 

public class Hello{}

> 자바파일명을 'hello.java'으로 할 경우 H에 대한 대소문자가 맞지 않아 문법적으로 에러발생.

 

(2) 자바파일에서 public 클래스는 오직 하나만 존재해야 한다.

 

파일명 : Test.java

public class Test{}

public class Hello{}

> 에러 Test.java 두 개의 public 클래스가 존재해서 에러

 

파일명 : Test.java

public class Test{}

class Hello{}

> public 클래스는 오직 Test만 존재하므로 에러 없음

 

파일명 : Test.java

class Test{}

class Hello{}

> 에러 없음

 

(3) 도스창에서 클래스 패스 설정하는 법

set classpath=.;.\sub;

 

(4) package를 같이 만들면서 컴파일 하는 옵션 (package가 있으면 현재폴더에 패키지를 만들면서 컴파일)

javac -d . 파일명.java

 

 

2. class path 클래스 패스 & 패키지

 

(1) class path

 

- class를 찾기 위한 경로. JVM이 프로그램을 실행할 때, 클래스파일을 찾는데 기준이 되는 파일 경로. 지정한 경로 이외에 추가적으로 확인이 필요한 폴더의 경로를 알려준다.

 

set classpath=.;.\폴더명;

 

- 만약 추가적으로 잡아주고 싶은 클래스패스 폴더명이 sub이라면 set classpath=.;.\sub; 이라고 입려해준다. 폴더명이 sub이 아닌 folder라면  set classpath=.;.\folder;  라고 입력해주면 된다.

 

(2) 배치파일 생성 - 배치 프로그램 실행을 위한 파일

 

javac -d. *.java

java 파일명

pause

 

- -d는 패키지까지 함께 생성되도록 한다.

- pause는 실행 후 바로 창이 닫히지 않도록 잠시 멈추도록 한다.

 

저장은 파일명.bat

 

- 확장자를 .bat으로 해준다.

 

(3) 패키지 선언

 

- 한 번밖에 들어가지 못하고 문법적으로 가장 위에 위치해야 한다.

 

 

3. class path 클래스 패스 & 패키지 예문

 

(1) 문제

 

- FruitSalesMain3.java의 FruitSeller 클래스를 다음의 패키지에 묶어서 컴파일 하자. orange.seller

 

- FruitBuyer 클래스를 다음의 패키지에 묶어서 컴파일 하자. orange.buyer

 

- 그리고 컴파일하고 실행해보자. 위에 내용을 배치 프로그램으로 해서 실행해 보자.

 

(2) FruitSalesMain3.java

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
class FruitSeller
{
    int numOfApple;
    int myMoney;
    final int APPLE_PRICE;
    
    public FruitSeller(int money, int appleNum, int price)
    {
        myMoney=money;
        numOfApple=appleNum;
        APPLE_PRICE=price;
    }
    
    public int saleApple(int money)
    {
        int num=money/APPLE_PRICE;
        numOfApple-=num;
        myMoney+=money;
        return num;
    }
    public void showSaleResult()
    {
        System.out.println("남은 사과: " + numOfApple);
        System.out.println("판매 수익: " + myMoney);
    }
} 
class FruitBuyer
{
    int myMoney;
    int numOfApple;
    
    public FruitBuyer(int money)
    {
        myMoney=money;
        numOfApple=0;
    }
    
    public void buyApple(FruitSeller seller, int money)
    {
        numOfApple+=seller.saleApple(money);
        myMoney-=money;
    }
    public void showBuyResult()
    {
        System.out.println("현재 잔액: " + myMoney);
        System.out.println("사과 개수: " + numOfApple);        
    }
}
class FruitSalesMain3
{
    public static void main(String[] args)
    {
        FruitSeller seller1 = new FruitSeller(0, 30, 1500);
        FruitSeller seller2 = new FruitSeller(0, 20, 1000);
        
        FruitBuyer buyer = new FruitBuyer(10000);
        buyer.buyApple(seller1, 4500);
        buyer.buyApple(seller2, 2000);
        
        System.out.println("과일 판매자1의 현재 상황");
        seller1.showSaleResult();
        
        System.out.println("과일 판매자2의 현재 상황");
        seller2.showSaleResult();
        
        System.out.println("과일 구매자의 현재 상황");
        buyer.showBuyResult();
    }
}
cs

 

(3) 배치 프로그램을 통해 실행하기

 

① FruitSeller 클래스를 다음의 패키지에 묶어서 컴파일 하자. orange.seller

 

- FruitSalesMain3에서 class FruitSeller 부분 잘라내어 따로 저장

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package orange.seller;
 
public class FruitSeller
{
    int numOfApple;
    int myMoney;
    final int APPLE_PRICE;
    
    public FruitSeller(int money, int appleNum, int price)
    {
        myMoney=money;
        numOfApple=appleNum;
        APPLE_PRICE=price;
    }
    
    public int saleApple(int money)
    {
        int num=money/APPLE_PRICE;
        numOfApple-=num;
        myMoney+=money;
        return num;
    }
    public void showSaleResult()
    {
        System.out.println("남은 사과: " + numOfApple);
        System.out.println("판매 수익: " + myMoney);
    }
} 
Colored by Color Scripter
cs

 

② FruitBuyer 클래스를 다음의 패키지에 묶어서 컴파일 하자. orange.buyer

 

- FruitSalesMain3에서 class FruitBuyer 부분 잘라내어 따로 저장

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package orange.buyer;
import orange.seller.FruitSeller;
 
public class FruitBuyer
{
    int myMoney;
    int numOfApple;
    
    public FruitBuyer(int money)
    {
        myMoney=money;
        numOfApple=0;
    }
    
    public void buyApple(FruitSeller seller, int money)
    {
        numOfApple+=seller.saleApple(money);
        myMoney-=money;
    }
    public void showBuyResult()
    {
        System.out.println("현재 잔액: " + myMoney);
        System.out.println("사과 개수: " + numOfApple);        
    }
} 
Colored by Color Scripter
cs

 

③ 그리고 컴파일하고 실행해보자. 위에 내용을 배치 프로그램으로 해서 실행해 보자.

 

- 잘라낸 내용들 없이 FruitSalesMain3의 내용만 저장

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import orange.seller.FruitSeller;
import orange.buyer.FruitBuyer;
 
class FruitSalesMain3
{
    public static void main(String[] args)
    {
        FruitSeller seller1 = new FruitSeller(0, 30, 1500);
        FruitSeller seller2 = new FruitSeller(0, 20, 1000);
        
        FruitBuyer buyer = new FruitBuyer(10000);
        buyer.buyApple(seller1, 4500);
        buyer.buyApple(seller2, 2000);
        
        System.out.println("과일 판매자1의 현재 상황");
        seller1.showSaleResult();
        
        System.out.println("과일 판매자2의 현재 상황");
        seller2.showSaleResult();
        
        System.out.println("과일 구매자의 현재 상황");
        buyer.showBuyResult();
    }
}
Colored by Color Scripter
cs

 

④ 배치 프로그램 실행을 위한 배치파일 생성하기

 

javac -d . *.java
java FruitSalesMain3
pause

 

- 텍스트 파일로 기재하여 파일 확장자를 bat로 주어 저장 후 실행

 

⑤ 실행 결과 확인

 

- 배치 프로그램 실행 결과

 

- orange package에 해당하는 class FruitBuyer, class FruitSeller 의 폴더와 class 파일 생성되었음

- FruitSalesMain3의 class 파일 생성되었음

 

'Java > Day7' 카테고리의 다른 글

[Java] class method 클래스 메소드  (0) 2021.11.08
[Java] access method ( getter & setter 게터앤세터)  (0) 2021.11.08
[Java] 기본값 & 접근 제어 지시자와 접근 허용범위  (0) 2021.11.08
    'Java/Day7' 카테고리의 다른 글
    • [Java] class method 클래스 메소드
    • [Java] access method ( getter & setter 게터앤세터)
    • [Java] 기본값 & 접근 제어 지시자와 접근 허용범위

    티스토리툴바