2013-03-02 13 views
10

Zgodnie z moją wiedzą nie możemy wykonać bez głównej metody, ponieważ podczas uruchamiania programu java. java Maszyna wirtualna szuka głównej metody. Jeśli JVM nie może znaleźć głównej metody, to pokaże ci błąd czasu wykonania Wyjątek w wątku głównym nie może znaleźć głównej klasy.Czy możemy wykonać program java bez metody main()?

Szukałem wielu blogów, a niektóre z nich mówią: tak, można to zrobić za pomocą statycznych blogów, jeśli w programie java znajduje się blok statyczny, program ładujący klasy ładuje cały blok statyczny, zanim java wywoła funkcję main () metoda!.

Czy to naprawdę możliwe i jaka będzie ich użyteczność.

+1

Powielanie tego pytania: http: // stackoverflow.com/questions/7591064/how-do-java-programs-run-without-defining-the-main-method – christopher

+0

@Chris Cooney to nie jest powielanie. To pytanie zostało zadane przeze mnie w wywiadzie, a następnie zacząłem szukać tych, nigdy nie widziałem żadnych innych postów na stackoverflow. To, co mówię, jest według moich badań. –

+0

Pytanie dotyczące sposobu uruchomienia kodu bez głównej metody. To duplikat .. – christopher

Odpowiedz

19

Teraz - nie


Przed Java 7:

Tak, kolejność jest następująca:

  • JVM ładuje klasa
  • wykonuje statyczne bloki
  • wygląda na metodzie głównej i wywołuje to

Więc, jeśli w bloku statycznym jest kod, zostanie wykonany. Ale nie ma sensu tego robić.

Jak sprawdzić, że:

public final class Test { 
    static { 
     System.out.println("FOO"); 
    } 
} 

następnie, jeśli spróbujesz uruchomić (wiersz albo polecenia forma z java Test lub IDE) Klasa, wynik jest:

FOO
java.lang.NoSuchMethodError: main

+0

Ta odpowiedź jest ważna tylko w przypadku "nieaktualnych" wersji Java (do wersji 6). – xehpuk

+0

zaktualizowano ........ – Bozho

2

ponieważ oznaczono jako Java-ee również - wtedy TAK jest to możliwe.

i rdzenia java jak również jest to możliwe przy użyciu static blocks

i sprawdzić to How can you run a Java program without main method?

EDIT:
Jak już wspomniano w innych odpowiedzi - nie jest to wsparcie w Javie 7

+0

Chcę wiedzieć w szczególności o rdzeniu Java. –

+0

dodany link do tego - Przy okazji nie ma to sensu - jak używać IDE nie uruchomi się – exexzian

+0

dlaczego nie uruchomi się –

2

Tak Można kompilować i wykonywać bez głównej metody Za pomocą bloku statycznego. Po wykonaniu bloku statycznego (wydrukowanego) pojawi się błąd informujący, że nie znaleziono żadnej głównej metody.

I Najnowsze INFO -> NIE MOŻESZ zrobić tego z wersją JAVA 7. IT nie wykona.

{ 
    static 
    { 
     System.out.println("Hello World!"); 
     System.exit(0); // prevents “main method not found” error 
    } 
} 

Ale to nie będzie działać z wersją JAVA 7.

Powiązane problemy