If you have: public interface Foo { public static void main(String[] args) { System.out.println("Foo!"); } } you can say java Foo and it will run. Is that what we intended? Should the java launcher detect this and not look for main() methods in interfaces?