Pytanko od nowego w świecie programowania - Could not find the main class

0

Witam. Pożyczyłem od znajomego książkę "Java: Praktyczny kurs" Marcina Lisa. Pierwszy program to (jakże by inaczej) wyświetlenie jakiegoś tekstu w konsoli. No więc przepisałem listing z książki:

class Main {
	private static void main(String args[]) {
		System.out.println("To jest napis.");
	}
}

i zapisałem plik pod nazwą Main.java, dokładnie tak jak w książce. Następnie miałem skompilować kod poleceniem javac Main.java i odpalić powstały plik Main.class poleceniem java Main.class. I wszystko by było super gdyby nie taki oto błąd:

[del@fedora Java]$ javac Main.java 
[del@fedora Java]$ java Main.class
Exception in thread "main" java.lang.NoClassDefFoundError: Main/class
Caused by: java.lang.ClassNotFoundException: Main.class
        at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: Main.class. Program will exit.

Powiedzcie mi, jako programistycznemu noobowi, co z tym fantem zrobić.

0

Nazwa klasy jest bez rozszerzenia. Znaczy:
java Main
a nie
java Main.class

0

Odpowiedni fragment z książki Lisa:

Aby go uruchomić, należy w wierszu poleceń wydać kolejną komendę:

**java Main**
0

Ok, wpisałem bez rozszerzenia (bo faktycznie, tak było w książce; coś źle wyczytałem). Pojawił się następny błąd:

[del@fedora Java]$ java Main 
Exception in thread "main" java.lang.UnsupportedClassVersionError: Main : Unsupported major.minor version 51.0
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:634)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
        at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: Main. Program will exit.
[del@fedora Java]$ 
0

Podaj output z poleceń
java -version
oraz
javac -version

1

Innymi słowy: kompilujesz pod Javę 7 a próbujesz uruchomić pod starszą wersją JVM.

1

Masz pewnie jdk7 i jre6 zainstalowane
javac pointuje do jdk, a java do jre...
Jeśli chcesz odpalać na jre6, to kompiluj z opcją -terget 6
Jeśli chcesz odpalać na jdk7, to lepiej sobie sam stwórz powiązanie w usr/bin do jdk7 (czy gdzieśtam) (usuń stare)

0

Super. Działa, dzięki. Faktycznie miałem problem z wersjami javy. Niestety Fedora przy próbie wywalenia openjdk (które jest w wersji 1.6) chcę pociągnąć pół systemu za nią. Zrobiłem odpowiednie dowiązanie i działa. Wiedziałem, że mogę na Was liczyć.

1 użytkowników online, w tym zalogowanych: 0, gości: 1