[Java] 공부중 책에 있는 예제를 실행했더니 오류가 납니다. java.lang.NoSuchMethodError

조회수 622회

아래가 책에 있는 코드를 그대로 옮긴 코드입니다.

----------------------------------아래--------------------------------------

class FruitSeller {
    int numOfApple;
    int myMoney;
    int APPLE_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);
    }

    public void initMembers(int money, int appleNum, int price) {
        myMoney = money;
        numOfApple = appleNum;
        APPLE_PRICE = price;
    }
}

class FruitBuyer {
    int myMoney = 10000;
    int 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 FruitSalesMain2 {

    public static void main(String[] args) {
        FruitSeller seller1 = new FruitSeller();
        seller1.initMembers(0, 30, 1500);

        FruitSeller seller2 = new FruitSeller();
        seller2.initMembers(0, 20, 1000);

        FruitBuyer buyer = new FruitBuyer();
        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();
    }

}

이클립스로 실행시

Exception in thread "main" java.lang.NoSuchMethodError: chapter07.FruitSeller.initMembers(III)V
    at chapter07.FruitSalesMain2.main(FruitSalesMain2.java:46)

라는 오류가 뜨며 실행되지 않습니다. 검색해보니 이 에러는 main 메소드에 문제가 있을때 나오는 에러라는데 무슨 문제인지 알지 못하겠어서 이렇게 질문합니다. 도와주세요.

1 답변

  • package testJava;
    
    class FruitSeller { int numOfApple; int myMoney; int APPLE_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);
    }
    
    public void initMembers(int money, int appleNum, int price) {
        myMoney = money;
        numOfApple = appleNum;
        APPLE_PRICE = price;
    }
    }
    
    class FruitBuyer { int myMoney = 10000; int 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 testClass {
    
    public static void main(String[] args) {
        FruitSeller seller1 = new FruitSeller();
        seller1.initMembers(0, 30, 1500);
    
        FruitSeller seller2 = new FruitSeller();
        seller2.initMembers(0, 20, 1000);
    
        FruitBuyer buyer = new FruitBuyer();
        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();
    }
    }
    

    제가 한번 testJava라는 이름으로 그대로 빌드한건데요. 잘 동작해요. 원인이 혹시 package를 선언안하지 않으셨어요? 아니면 책에서 복사하시면서 ansi로 넘어오지 않았는지???

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)