Problem z skompilowaniem programu.

0

Hej :)
Mam problem nie moge skompilowac programu. Musze wstawic jakis rysunek czy utworzyc cos?
Wyskakuje taki oto blad:

C:\javac 1.java
1.java error: class Rysunki is public, should be declared in a file named Rysunki.java
public class Rysunki extends Frame {

1 error

Kod programu:

//Rysunki.java:
import java.awt.event.;
import java.awt.
;
public class Rysunki extends Frame
{
Rysunki ()
{
super ("Rysunki");
setSize(200, 220);
}
public void paint (Graphics g)
{
Insets insets = getInsets();
g.translate (insets.left, insets.top);
g.drawLine (5, 5, 195, 5);
g.drawLine (5, 75, 5, 75);
g.drawRect (25, 10, 50, 75);
g.fillRect (25, 110, 50, 75);
g.drawRoundRect (100, 10, 50, 75, 60, 50);
g.fillRoundRect (100, 110, 50, 75, 60, 50);
g.setColor(Color.red);
g.drawString ("Test grafiki",50, 100);
g.setColor(Color.black);
}
public static void main (String [] args)
{
Frame f = new Rysunki ();
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.out.println("Dziekujemy za prace z programem...");
System.exit(0);
}
});
f.setVisible(true);
}
}// koniec public class Rysunki extends Frame

0

A jak się nazywa plik w którym to zapisałeś i czemu nie nazywa się Rysunki.java?

0

Okey, udalo sie. Teraz przy probie wlaczenia wywala:
Error: Could not find or load main class Rysunki

Jakas rada ?

1

OMG czy tu nie umiesz nawet porządnie ukraść czyjegoś kodu? Zapewne klasa Rysunki jest w jakimś pakciecie więc samo
java Rysunki
nie wystarczy do jej uruchomienia

0

U mnie ten kod się odpala jeśli dam nazwę pliku Rysunki.java i umieszczę w domyślnej (najwyższej) paczce.

PS:

>>> java dupa
Error: Could not find or load main class dupa

Może po prostu wywołujesz ze złego folderu lub w jakiś inny sposób Java nie może znaleźć pliku.

0

Publiczna klasa musi być w pliku o takiej samej nazwie jak nazwa klasy i rozszerzeniu .java. U Ciebie klasa Rysunki nie siedzi w "Rysunki.java", ale w "1.java". Zmień nazwę pliku na właściwą.

0
Wibowit napisał(a):

U mnie ten kod się odpala jeśli dam nazwę pliku Rysunki.java i umieszczę w domyślnej (najwyższej) paczce.

Może po prostu wywołujesz ze złego folderu lub w jakiś inny sposób Java nie może znaleźć pliku.

Wywołuje z tego folderu gdzie utworzyl sie plik Rysunki.class.
Niestety wywala tylko błąd.

Olamagato napisał(a):

Publiczna klasa musi być w pliku o takiej samej nazwie jak nazwa klasy i rozszerzeniu .java. U Ciebie klasa Rysunki nie siedzi w "Rysunki.java", ale w "1.java". Zmień nazwę pliku na właściwą.

Tak bylo na poczatku. W 3 poscie napisalem ze zmienilem i program sie skompilowal, lecz sie nie odpala.

0

@Mereth a czy Rysunki.java leży bezpośrednio w katalogu build czy są nad nim inne katalogi? Bo jeśli są, to znaczy że klasa Rysunki ma jakiś pakiet i uruchamia się ją inaczej.

0

@Mereth:
Na 100% robisz jakiś głupi błąd. Kompiluj i odpalaj z konsoli, a potem pokaż screena z konsolą. Sprawdź czy w kodzie Javowym nie ma na początku dyrektywy package.

0
Shalom napisał(a):

@Mereth a czy Rysunki.java leży bezpośrednio w katalogu build czy są nad nim inne katalogi? Bo jeśli są, to znaczy że klasa Rysunki ma jakiś pakiet i uruchamia się ją inaczej.

Rysunki.java leży bezpośrednio na dysku c:
Powinienem przeniesc do innego katalogu ?

Wibowit napisał(a):

@Mereth:
Na 100% robisz jakiś głupi błąd. Kompiluj i odpalaj z konsoli, a potem pokaż screena z konsolą. Sprawdź czy w kodzie Javowym nie ma na początku dyrektywy package.

Przy kompiowaniu nic nie wyrzuca.
Przy uruchomieniu java Rysunki, konsola wyrzuca ten błąd co napisalem powyzej w poscie.

0

To napisz nam jaką komendę uruchamiasz i co leży w katalogu z którego uruchamiasz i co masz w pliku Rysunki.java

0

W Rysunki.java znajduje się kod programu podany w 1szym poście.

W katalogu znajdują sie: Rysunki.java, Rysunki.class
Uruchamiam wpisujac komende: java Rysunki
Konsola zwraca wtedy: Error: Could not find or load main class Rysunki

0

Jaka wersja kompilatora, jaka wersja JRE?
javac -version ???
java -version ???

0

Po pierwsze sprawdź czy istnieje sobie zmienna środowiska o nazwie CLASSPATH. A jeżeli istnieje to czy na liście katalogów oddzielonych średnikami istnieje "." (kropka) oznaczająca bieżący katalog. Jeżeli istnieje i nie ma na niej kropki, to może to być przyczyna Twoich problemów bo java po prostu nie będzie szukać pliku .class w katalogu bieżącym ponieważ sama niczego się nie domyśla. (Przykład działającej zmiennej CLASSPATH z Windows: ".;%JREL%\rt.jar;%JREL%\deploy.jar;%JREL%\resources.jar;%JREL%\jsse.jar;%JREL%\jce.jar;%JREL%\javaws.jar;%JDKL%\tools.jar;%NB%\lib\javassist-3.7\javassist.jar;C:\PRG").

Bez względu na to czy taka zmienna istnieje czy nie sprawdź takie wywołanie w katalogu z plikiem Rysunki.class: "java -cp . Rysunki". To powinno na sztywno wywołać metodę main z tego pliku o ile nie miał on w tekście podczas kompilacji instrukcji package.

Gdyby istniała instrukcja package to będzie to jeszcze bardziej namieszane ponieważ musiałbyś w bieżącym katalogu (lub jakimkolwiek na liście zmiennej classpath) umieścić drzewko katalogów odpowiadających nazwom pakietów użytych w instrukcji package. I dopiero tam - na samym dnie - plik Rysunki.class.

0

@up
Dzieki rozjasniles mi :) Trzeba bylo z classpathem pobawic sie. Wszystko dziala.

Reszcie tez dziekuje. Temat do zamkniecia.
Pozdrawiam

@Edit:
Jeszcze 1 pytanie, jeżeli w programie mam:
package com.jhlabs.image;

Co muszę zrobic, aby odpalić program?
Konsola wyrzuca:
[IMG]http://i47.tinypic.com/28amjyd.jpg[/IMG]

0

java com.jhlabs.image.NazwaKlasy
Bo taka jest poprawna nazwa klasy. Ale musisz to zrobić z poziomu górnego katalogu, a nie z poziomu miejsca gdzie są te klasy

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