Wątek przeniesiony 2017-03-21 11:57 z Java przez bogdans. Powód: Wątek dotyczący podstaw

Prosty kod a nie działa

Odpowiedz Nowy wątek
2017-03-17 12:58
Bogaty Ogrodnik
0

Cześć, próbuję odpalić prosty kod z książki: Java, rusz głową. Nie mam kompletnie pojęcia dlaczego kod mi się nie uruchamia:

 package pies;
 
class Piesek{
    String imie;
 
     public void szczekaj()
        {
        System.out.println(imie + " szczeka: Hau Hau!!");
        }
 
    public static void main(String[] args) {
        Piesek pies1 = new Piesek();
        pies1.szczekaj();
        pies1.imie = "Azorek";
 
        Piesek[] mojePsy = new Piesek[3];
        mojePsy[0] = new Piesek();
        mojePsy[3] = new Piesek();
        mojePsy[2] = new Piesek();
 
        mojePsy[0].imie = "Szarik";
        mojePsy[1].imie = "Cywil";
 
        System.out.print("Ostatni pies ma na imię");
        System.out.println(mojePsy[2].imie);
 
        int x = 0;
        while(x < mojePsy.length){
            mojePsy[x].szczekaj();
            x = x++;
        }
 
    }}

Wyskakuje błąd:

 run:
Error: Could not find or load main class pies.Pies
C:\Users\Kasper\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 0 seconds)

XML:

 project name="{0} (run)" default="run" basedir=".">
    <target name="run">        
        <translate-classpath classpath="${classpath}" targetProperty="classpath-translated" />
        <property name="run.jvmargs" value="" />
        <property name="work.dir" value="${basedir}"/>
        <property name="application.args" value="" />
        <property name="java.failonerror" value="true"/>
        <java classpath="${classpath-translated}" classname="${classname}" dir="${work.dir}" jvm="${platform.java}" fork="true" failonerror="${java.failonerror}">
            <jvmarg value="-Dfile.encoding=${encoding}"/>
            <redirector inputencoding="${encoding}" outputencoding="${encoding}" errorencoding="${encoding}"/>
            <jvmarg line="${run.jvmargs}" />
            <arg line="${application.args}" />
            <syspropertyset>
                <propertyref prefix="run-sys-prop."/>
                <mapper from="run-sys-prop.*" to="*" type="glob"/>
            </syspropertyset>
        </java>
    </target>
</project>
edytowany 1x, ostatnio: bogdans, 2017-03-21 11:58

Pozostało 580 znaków

2017-03-17 13:04
0

Uruchamiasz z konsoli czy z IDE? Jak z konsoli, skompilowales wczesniej?

z tego co widzę z błędu to netbeans - stivens 2017-03-17 13:06

Pozostało 580 znaków

2017-03-17 13:14
1

Package pies nie ma głównej klasy, pochrzaniłeś kod albo w książce jest błąd


[You know nothing, Jon Snow…]
edytowany 1x, ostatnio: stivens, 2017-03-17 14:47

Pozostało 580 znaków

2017-03-17 13:23
0

Piesek.java

package pies;
 
public class Piesek {
    String imie;
 
    public void szczekaj()
    {
        System.out.println(imie + " szczeka: Hau Hau!!");
    }
}
 

Main.java

package pies;
 
public class Main {
 
    public static void main(String[] args) {
        Piesek pies1 = new Piesek();
        pies1.imie = "Azorek";
        pies1.szczekaj();
 
        Piesek[] mojePsy = new Piesek[3];
        mojePsy[0] = new Piesek();
        mojePsy[1] = new Piesek();
        mojePsy[2] = new Piesek();
 
        mojePsy[0].imie = "Szarik";
        mojePsy[1].imie = "Cywil";
        mojePsy[2].imie = "Burek";
 
        System.out.print("Ostatni pies ma na imię ");
        System.out.println(mojePsy[2].imie);
    }
}
 
Azorek szczeka: Hau Hau!!
Ostatni pies ma na imię Burek

Process finished with exit code 0

[You know nothing, Jon Snow…]
edytowany 1x, ostatnio: stivens, 2017-03-17 13:24
jesli się rozdziela na pakiety. musi byc klasa Main? - Javaluke Scriptwalker 2017-03-17 14:14
nie wiem, newbie jestem - musiałbym doczytać - stivens 2017-03-17 14:23
Nie trzeba żadnej klasy Main. To co jest w tym poście to przepisany inaczej kod autora. Nie wiem szczerze mówiąc po co. - szweszwe 2017-03-17 14:28
autor wszystko namieszał, zobacz np. to Piesek[] mojePsy = new Piesek[3]; mojePsy[3] = new Piesek(); - stivens 2017-03-17 14:32
to już inna bajka rzeczywiście, ale błąd jest taki, że nie może znaleźć i załadować metody main. dopiero później mu się wysypią inne błędy hehehe - Javaluke Scriptwalker 2017-03-17 14:34
zmieniłem to stwiedzenie "klasa main" na "główną klasę" we wcześniejszym poście żeby nie było nieporozumień :P - stivens 2017-03-17 14:48

Pozostało 580 znaków

2017-03-17 14:25
0

Przecież metoda main może być w klasie Pies. Mi się wydaję, że po prostu nie masz katalogu pies i w nim klasy Pies. Nie wiem jak tworzyłeś tą klasę, ale chyba tak, że dodaj klase, a później dopisałeś package pies. Jeśli nie umiesz czytać takich prostych błędów z IDE to powodzenia w nauce.

Btw. skąd wziąłeś ten plik xml? Netbeans automatycznie coś takiego generuje?

edytowany 1x, ostatnio: Javaluke Scriptwalker, 2017-03-17 14:30

Pozostało 580 znaków

2017-03-17 19:28
0

próbujesz uruchomic pies.Pies a w rzeczywistosci masz klasę Piesek, wiec nic dziwnego ze Ci jej nie znajduje.
Prawdopodobnie utworzyles projekt a pozniej zmieniles nazwe klasy.
W Netbeans wejdz w menu Run -> Set Project Configuration -> Customize i sprawdź czy jest ustawiona dobra klasa (MainClass). Jak nie to zmien na Piesek.


edytowany 3x, ostatnio: Hagefid, 2017-03-17 19:29

Pozostało 580 znaków

2017-03-18 18:10
Misiek
0
        Piesek[] mojePsy = new Piesek[3];
        mojePsy[0] = new Piesek();
        mojePsy[3] = new Piesek();
        mojePsy[2] = new Piesek();

Skoro tworzysz tablicę trójelementową to co tam robi czwarty element?

 
x = x++;

W ten sposób pętla się zapętla.

Albo coś w książce pokopali, albo Ty źle przepisujesz.

A tu nieco inna wersja tego kodu:

 package pies;
 
class Piesek{
    private String imie;
 
     public Piesek(String imie) {
        this.imie = imie;
    }
 
    public void szczekaj()
        {
        System.out.println(imie + " szczeka: Hau Hau!!");
        }
 
    public static void main(String[] args) {
        Piesek pies1 = new Piesek("Azorek");
        pies1.szczekaj();
 
        Piesek[] mojePsy = new Piesek[3];
        mojePsy[0] = new Piesek("Szarik");
        mojePsy[1] = new Piesek("Cywil");
        mojePsy[2] = new Piesek("Burek");
 
        System.out.print("Ostatni pies ma na imię ");
        System.out.println(mojePsy[2].imie);
 
        int x = 0;
        while(x < mojePsy.length){
            mojePsy[x].szczekaj();
            x++;
        }
 
   }
 } 
 

Pozostało 580 znaków

2017-03-21 04:20
0

Stwórz folder pies, a w nim plik Piesek.java.
W Pliku Piesek.java pisz:

public class Piesek(...)

i kompiluj na "zewnątrz folderu pies":

javac pies/Piesek.java
edytowany 4x, ostatnio: bogdans, 2017-03-21 23:18
Zaimponowałeś mi. Krótki post, a zmieściłeś w nim sześć błędów oraz propozycję nazwy niezgodną z konwencjami. - bogdans 2017-03-21 11:55

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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