Avatar billede ibrene Nybegynder
25. juli 2002 - 14:11 Der er 24 kommentarer og
1 løsning

Kan ikke køre mit program.... Kan nogle hjælpe mig

Hejsa

Jeg har lavet følgende program og haft det kørende i en applet, men det var meningen at det skulle køre som et program i Linux og udskrive tiden engang hvert 10. sekund, men der kommer følgende fejl op, når jeg prøver at køre det:
Exception in thread "main" java.lang.NoSuchMethodError: main

Kan nogle hjælpe mig???

mvh
Ibrene


------------------------------------------
import java.util.Date;

public class DigitalThreads2 implements Runnable {
        Date theDate;
        Thread runner;

        public void start() {
                if (runner == null); {
                        runner = new Thread(this);
                        runner.start();
                }
        }

        public void stop() {
                if (runner != null) {
                        runner.stop();
                        runner = null;
                }
        }

        public void run() {
                while (true) {
                        theDate = new Date();
                        skriv();
                        try { Thread.sleep(10000); }
                        catch (InterruptedException e) { }
                }
        }

        public void skriv() {
                System.out.println(theDate.toString());
        }
}
Avatar billede europe Nybegynder
25. juli 2002 - 14:29 #1
tilføj følgende

        public DigitalThreads2()
        {
        }
        public static void main(String args[])
        {
          DigitalThreads2 det = new DigitalThreads2();
          det.start();
        }

Så skulle det gerne kører!!!!
Avatar billede ibrene Nybegynder
25. juli 2002 - 14:37 #2
Så det kommer til at se sådanne ud???

import java.util.Date;

public DigitalThreads2() {
}

public static void main(String args[]) {
    DigitalThreads2 det = new DigitalThreads2();
    det.start();
}
       
public class DigitalThreads2 implements Runnable {
    Date theDate;
    Thread runner;

    public void start() {
        if (runner == null); {
            runner = new Thread(this);
            runner.start();
        }
    }

    public void stop() {
        if (runner != null) {
            runner.stop();
            runner = null;
        }
    }

    public void run() {
        while (true) {
            theDate = new Date();
            skriv();
            try { Thread.sleep(1000); }
            catch (InterruptedException e) { }
        }
    }

    public void skriv() {
        System.out.println(theDate.toString());
    }
}


For det giver følgende fejl:

[root@dev java]# javac DigitalThreads2.java
DigitalThreads2.java:3: 'class' or 'interface' expected
public DigitalThreads2() {
      ^
Note: DigitalThreads2.java uses or overrides a deprecated API.
Note: Recompile with -deprecation for details.
1 error
Avatar billede magoo20000 Nybegynder
25. juli 2002 - 14:38 #3
main skal ind i klassen!
Avatar billede magoo20000 Nybegynder
25. juli 2002 - 14:38 #4
ditto din constructor!
Avatar billede magoo20000 Nybegynder
25. juli 2002 - 14:40 #5
Desuden bruger du en deprecated(forældet metode)! Det kan give problemer på længere sigt.
Avatar billede europe Nybegynder
25. juli 2002 - 14:41 #6
Det er rigtig !!!

Fejl du får er fordi der ikke er en main metode at kalde - det skal der være når en klasse skal startes som program
Avatar billede magoo20000 Nybegynder
25. juli 2002 - 14:42 #7
Det her virker:!

import java.util.Date;

public class DigitalThreads2 implements Runnable {
    Date theDate;
    Thread runner;

public DigitalThreads2() {
}


    public void start() {
        if (runner == null); {
            runner = new Thread(this);
            runner.start();
        }
    }

    public void stop() {
        if (runner != null) {
            runner.stop();
            runner = null;
        }
    }

    public void run() {
        while (true) {
            theDate = new Date();
            skriv();
            try { Thread.sleep(1000); }
            catch (InterruptedException e) { }
        }
    }

    public void skriv() {
        System.out.println(theDate.toString());
    }

public static void main(String args[]) {
    DigitalThreads2 det = new DigitalThreads2();
    det.start();
}

}
Avatar billede ibrene Nybegynder
25. juli 2002 - 14:45 #8
GLemte lige at sige tusind tak for hjælpen...
Avatar billede magoo20000 Nybegynder
25. juli 2002 - 14:46 #9
Skulle det være en anden gang!
Avatar billede ibrene Nybegynder
25. juli 2002 - 14:48 #10
HVorfor starter den 10 programmer op af det samme?

22354 pts/1    S      0:01 java DigitalThreads2
22355 pts/1    S      0:00 java DigitalThreads2
22356 pts/1    S      0:00 java DigitalThreads2
22357 pts/1    S      0:00 java DigitalThreads2
22358 pts/1    S      0:00 java DigitalThreads2
22359 pts/1    S      0:00 java DigitalThreads2
22360 pts/1    S      0:00 java DigitalThreads2
22361 pts/1    S      0:00 java DigitalThreads2
22362 pts/1    S      0:00 java DigitalThreads2
22363 pts/1    S      0:00 java DigitalThreads2

Er det fordi det er Threads eller hvordan?
Avatar billede europe Nybegynder
25. juli 2002 - 14:48 #11
Det er helt iorden!!!!

...A busstation is where the bus stops
...A trainstation is where the train stops
...On my desk there is a workstation...
Avatar billede magoo20000 Nybegynder
25. juli 2002 - 14:50 #12
Den starter en tråd hvert sekund - og det bliver den ved med pga. din while(true) løkke... Den kører bare derudaf!
Avatar billede magoo20000 Nybegynder
25. juli 2002 - 14:52 #13
Prøv med    while (true) {
            theDate = new Date();
            skriv();
            try { Thread.sleep(10000); }
            catch (InterruptedException e) { }
        }
Avatar billede ibrene Nybegynder
25. juli 2002 - 14:52 #14
Det er jeg ikke sikekr på, for nu har den kørt i et minut og der er stadig hverken flere eller færre...
Avatar billede magoo20000 Nybegynder
25. juli 2002 - 14:53 #15
Der stod også 10000 i din oprindelige kode, men den blev ændret til 1000 efterfølgende - det havde jeg ikke set!
Avatar billede magoo20000 Nybegynder
25. juli 2002 - 14:55 #16
Det virker fint under Win2000.. Jeg bruger den kode som jeg postede 25/07-2002 14:42:29.. Bare med 10000 istedet for 1000.
Avatar billede europe Nybegynder
25. juli 2002 - 14:58 #17
ja jeg så heller ikke noget af ovenstående jeg fik bare en dato ud engang imellem ...

Har du skrevet mere til i din system.out.prinln() eller er den som den står her over??
Avatar billede ibrene Nybegynder
25. juli 2002 - 15:01 #18
Nej overstående er fra Linux, hvis du laver en

ps -ax

for at se hvilke programmer som køre. Den skriver fint ud hvad som den skal, undre mig bare over hvorfor der starter flere tråde op.
Avatar billede europe Nybegynder
25. juli 2002 - 15:04 #19
okay det ikke lige min hjemmebane så ....

Hva' sker der når der startes et almidelig java-program der ikke kører på tråde - er der så også flere ????
Avatar billede ibrene Nybegynder
25. juli 2002 - 15:13 #20
Det kan jeg ikke lige nå at se... men skidt med det... jeg finder nok en naturlig forklaring på det tidspunkt.

Men tak skal i havde for hjælpen.

Forøvrigt, er der nogle af jer, som kender til at havde java programmr til at lytte/skrive på en port sammen med et andet program på en anden maskine?
Avatar billede europe Nybegynder
25. juli 2002 - 15:15 #21
Mener du alla en chat ???
Avatar billede magoo20000 Nybegynder
25. juli 2002 - 15:17 #22
Skal lige se efter, 2 mins.
Avatar billede magoo20000 Nybegynder
25. juli 2002 - 15:17 #23
Jeg mener at have en SocketChat - en meget skrabet version!
Avatar billede ibrene Nybegynder
25. juli 2002 - 15:19 #24
coool... er det noget du har lyst til at "share" med mig eller hvordan?

så må du meget gerne sende den til mig på ibrene@alfaweb.dk
Avatar billede magoo20000 Nybegynder
25. juli 2002 - 15:21 #25
Jeg zipper lige lige tråd-halløj sammen og sender det til dig!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester