• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed java i javac w konsoli. Error: Could not find or load main class

Cloud VPS
0 głosów
9,280 wizyt
pytanie zadane 15 października 2017 w Java przez mibdbz Gaduła (4,300 p.)
zamknięte 15 października 2017 przez mibdbz

Witam. Problem polega na tym, że polecenie javac działa bez problemu. Tworzy się nowy plik z rozszerzeniem .class. Natomiast polecenie java z nazwa pliku już niestety nie działa. Mam zainstalowaną jave 1.8.0_144

ścieżka PATH do JDK jest ustawiona na katalog, w którym rzeczywiście się znajduje.

W konsoli wyskakuje mi błąd Error: Could not find or load main class HelloWorld

Co mogę zrobić aby plik ze zwykłym Hello World się uruchamiał?

 

Z góry dziękuję za odpowiedzi!!

komentarz zamknięcia: Uzyskanie odpowiedzi
1
komentarz 15 października 2017 przez mbabane Szeryf (79,260 p.)

Chodzi o pakiety. Linia pierwsza package definiuje przestrzeń nazw do której należy klasa i po skompilowaniu ta klasa musi znajdować się w folderze o nazwie takiej jak pakiet (w tym przypadku helloworld). A pełna nazwa klasy składa się z nazw pakietów i z nazwy samej klasy. Pakiet to nic innego jak folder.

Wykonując polecenie bezpośrednio w katalogu z klasą, java szukała klasy HelloWorld, a klasa którą chciałeś wywołać dla javy ma nazwę helloworld.HelloWorld.

komentarz 15 października 2017 przez mibdbz Gaduła (4,300 p.)
Dzięki za wytłumaczenie. Bardzo się przyda. Ale skorzystam jeszcze z Twojej wiedzy i uprzejmości. Jeśli miałbym program składający się z wielu pakietów to wywołuje to tak samo? Java znajdzie sobie implementację innych pakietów w pliku z klasą main?
1
komentarz 15 października 2017 przez mbabane Szeryf (79,260 p.)

Szczerze powiedziawszy to dokładnie nie wiem jakby to wyglądało, ponieważ korzystam z IDE do zarządzania takimi rzeczami, bo ręcznie jak sam zauważyłeś może to sprawiać dodatkowy kłopot.

Ale zdaje się że trzeba by wywoływać z katalogu nadrzędnego względem wszystkich wykorzystywanych pakietów, bo java szuka pakietów od bieżącego foldera w górę.

Mając np. taki kod:

package pakiet1;

public class Word
{
	public String word;
}
package pakiet;
import pakiet1.Word;

public class HelloWorld
{
	public static void main(String args[])
	{
		System.out.println("Czesc");

		Word word = new Word();
		word.word = "Witam";

		System.out.println(word.word);
	}
}

Układ plików:

java
├───pakiet
│     HelloWorld.java
│
└───pakiet1
      Word.java

Lista poleceń mogłaby wyglądać tak:

F:\java>javac pakiet/*.java pakiet1/*.java

F:\java>java pakiet.HelloWorld
Czesc
Witam

F:\java>

 

1
komentarz 15 października 2017 przez mibdbz Gaduła (4,300 p.)
Bardzo dziękuję za odpowiedź i za poświęcony czas. Przygoda z pakietami w wbrew pozorom dużo mnie nauczyła. Zamykam temat.
komentarz 15 października 2017 przez mbabane Szeryf (79,260 p.)
W sumie to dobrze, że zacząłeś od konsoli i ręcznego kompilowania bo w IDE nawet byś nie zauważył pewnych elementów związanych z pakietami. W IDE po prostu robisz milion pakietów i jednym kliknięciem wszystko odpalasz.

Podobne pytania

0 głosów
1 odpowiedź 3,619 wizyt
pytanie zadane 9 maja 2017 w Java przez Milesq Nałogowiec (32,020 p.)
0 głosów
1 odpowiedź 485 wizyt
pytanie zadane 24 marca 2020 w C i C++ przez Ururka Nowicjusz (230 p.)
0 głosów
1 odpowiedź 216 wizyt
pytanie zadane 29 października 2020 w Java przez Jedwab Użytkownik (550 p.)

93,467 zapytań

142,460 odpowiedzi

322,734 komentarzy

62,847 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...