我设置了classpath,编译也正常,java Music5就报异常
java.lang.NoClassDefFoundError 不清楚!
源码转自thinking in java
//: c08:music5:Music5.java// Interfaces.
import java.util.*; interface Instrument {
    // Compile-time constant: 
    int i = 5; // static & final// Cannot have method definitions:
    void play(); // Automatically public
    String what(); 
    void adjust();
}class Wind implements Instrument {
    public void play() {
        System.out.println("Wind.play()");
    }
    public String what() { return "Wind"; }
    public void adjust() {}
}class Percussion implements Instrument {
    public void play() {
        System.out.println("Percussion.play()");
    }
    public String what() { return "Percussion"; }
    public void adjust() {}
}class Stringed implements Instrument {
    public void play() {
        System.out.println("Stringed.play()");
    }
    public String what() { return "Stringed"; }
    public void adjust() {}
}class Brass extends Wind {
    public void play() {
        System.out.println("Brass.play()");
    }
    public void adjust() {
        System.out.println("Brass.adjust()");
    }
}class Woodwind extends Wind {
    public void play() {
        System.out.println("Woodwind.play()");
    }
    public String what() { return "Woodwind"; }
}public class Music5 {
// Doesn't care about type, so new types// added to the system still work right:
    static void tune(Instrument i) {
         // ... 
        i.play(); 
     }
    static void tuneAll(Instrument[] e) {
        for(int i = 0; i < e.length; i++)
            tune(e[i]);
    }
    public static void main(String[] args) {
        Instrument[] orchestra = new Instrument[5]; 
        int i = 0; 
        // Upcasting during addition to the array: 
        orchestra[i++] = new Wind(); 
        orchestra[i++] = new Percussion(); 
        orchestra[i++] = new Stringed(); 
        orchestra[i++] = new Brass(); 
        orchestra[i++] = new Woodwind(); 
        tuneAll(orchestra);
    }
} ///:~