Eclipse en Java

Pagina: 1
Acties:
  • 958 views

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

Sindskort ben ik bezig geweest om een beetje Java te gaan leren. Ik ben toen begonnen met het programma JCreator, nu heb ik laatst een MacBook Pro gekocht waar JCreator niet op kan. Dus heb ik Eclipse geprobeerd, echter kan ik me niet wijsmaken hoe dat programma werkt. Met JCreator werkte alle codes en bij Eclipse krijg ik overal foutmeldingen. Nou denk ik dat de debugger van Eclipse wat strenger is dan die van JCreator, maar zo vind ik het moeilijk om Java te leren.
Of weten mensen een alternatief dat bijna het zelfde werkt als JCreator voor de mac? Ik heb de volgende programma's al geprobeerd:

Eclipse
Netbeans
JEdit
JGrasps

Acties:
  • 0 Henk 'm!

  • EnnaN
  • Registratie: September 2002
  • Laatst online: 11:42

EnnaN

Toys in the attic

Er zijn vast wel andere dingen te vinden om in te coden, maar Eclipse geeft doorgaans niet echt waarschuwingen voor dingen die onnodig zijn? Kun je een voorbeeld geven van code die niet werkt / foutmeldingen geeft in de "debugger" (ik betwijfel of je een debugger bedoelt overigens) en die je wel graag zou willen hebben werken?

sig


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package toepassing;
import java.awt.*
import java.awt.event.*;
import javax.swing.*;

public class program extends JFrame {
    public static void main( String args[] ) {
        JFrame frame = new program();
        frame.setSize( 400, 200);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setTitle("voorbeeld");
        JPanel paneel = new programma();
        frame.setContentPane(paneel);
        frame.setVisible(true);
        }
}

class programma extends JPanel {
    private JTextField tekstVak1, tekstVak2, tekstVak3;
    private int a, b, c, temp;
    
    public programma() {
        tekstVak1 = new JTextField(10);
        
        tekstVak1.addActionListener(new TekstVakHandler());

        add(tekstVak1);
    }
    public TekstVakHandler implements ActionListener {
        static void actionPerformed(ActionEvent e) {
            String tekst = tekstVak1.getText();
            System.out.writeln(tekst);
        }
    }


Dit is een sterk aangepaste code die ik uiteindelijk eigenlijk had, maar deze werkt ook niet eens (zover ik weet klopt ie wel). Mijn vraag is wat doe ik fout, of is mijn hele java code gewoon fout dat hij het daarom niet doet?

Acties:
  • 0 Henk 'm!

  • Amras
  • Registratie: Januari 2003
  • Laatst online: 11-09 19:11
Als het goed is geeft Eclipse aan wat er fout is aan je code. Dat zou dan weer voldoende moeten zijn om het op te lossen. ;)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ja maar het genereert allemaal onzin fouten (vind ik :p) dat niet het geval was bij JCreator (die deed over veel dingen niet moeilijk)

Acties:
  • 0 Henk 'm!

  • Amras
  • Registratie: Januari 2003
  • Laatst online: 11-09 19:11
In je voorbeeld mis je in ieder geval een }, wat geen onzinfout is maar gewoon een syntaxfout. Als je nu aangeeft welke fouten je precies krijgt, kan iemand van hier je de goede kant op sturen. ;)

Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Verwijderd schreef op maandag 19 juli 2010 @ 22:25:
(zover ik weet klopt ie wel). Mijn vraag is wat doe ik fout, of is mijn hele java code gewoon fout dat hij het daarom niet doet?
Zo op het oog lijkt het erop dat Eclipse correct foutmeldingen hierover geeft. Als dit wel compileert in JCreator (heb je dat uberhaupt geprobeerd?) dan zou me dat heel erg verbazen en een minpunt van JCreator zijn.

Sowieso is die TekstVakHandler waarschijnlijk wat onjuist geimplementeerd (die methode erin moet vast niet static zijn). Overigens is het ook gebruikelijk om classes met een hoofdletter te beginnen (Program, Programma, wat overigens geen geweldige namen zijn) en zoveel mogelijk in losse .java-files te stoppen.

Het klinkt misschien wat flauw, maar ik krijg de indruk dat je net iets te snel zonder goede introductie in Java-programmeren bent gedoken. Het lijkt me toch dat als je een normale programmeerintroductie ertoe had gevolgd dat je een aantal van de foutmeldingen die je gegarandeerd krijgt hier, niet had hoeven krijgen :)

Acties:
  • 0 Henk 'm!

  • truegrit
  • Registratie: Augustus 2004
  • Laatst online: 05-09 13:06
Ik zie zo al een paar dingen die volgens eclipse als warning worden gegeven, zoals classnames die beginnen met een kleine letter (programma ipv Programma) en een boel ongebruikte variabelen (int a, b, c, temp). Misschien dat je daarom die warnings krijgt, met het gele lijntje er onder?

Iets specifieker mag trouwens ook wel, dus geef eens een concreet voorbeeld van een foutmelding

hallo


Acties:
  • 0 Henk 'm!

  • Twazerty
  • Registratie: April 2006
  • Laatst online: 17:40

Twazerty

AVCHDCoder developer

Ik ben zelf fan van netbeans. Ik heb het op school geleerd met BlueJ (zeer basis) daarna met netbeans. Aan eclipse zit ik mij continue te ergeren.

Overigens moet je op Mac OS X de volgende Layout Generation Style gebruiken voor Gui's:
"Swing Layout Extension Library" gebruiken. "Standard Java 6 Code" word niet ondersteund op Mac OS X (Klote Apple) waardoor je foutmeldingen krijgt.

Ruisende versterker: schakel je subwoofer in.


Acties:
  • 0 Henk 'm!

  • Avalaxy
  • Registratie: Juni 2006
  • Nu online
truegrit schreef op maandag 19 juli 2010 @ 22:34:
Ik zie zo al een paar dingen die volgens eclipse als warning worden gegeven, zoals classnames die beginnen met een kleine letter (programma ipv Programma) en een boel ongebruikte variabelen (int a, b, c, temp). Misschien dat je daarom die warnings krijgt, met het gele lijntje er onder?
Lijkt mij inderdaad ook de oorzaak. Maar dan heb je het niet over errors maar over warnings :) En met warnings zou je gewoon moeten compileren. Lukt de TS dat wel?

Post anders eens een screenshot.

[ Voor 3% gewijzigd door Avalaxy op 20-07-2010 01:10 ]


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 11-09 20:27

Matis

Rubber Rocket

Waarschijnlijk gaat het al fout bij het feit dat elke class in Java in een appart bestand moet. dat de naam van de klasse heeft (voor public).
Daarnaast hoef je bij een extends JFrame geen new() te doen, maar kun je met this werken.
Vergeet ook niet dat de eerste methode in je constructor super(); moet zijn.
Eclipse verwacht ook dat er bij een GUI-klasse een serialVersionUID zit.

Misschien is Eclipse wat strenger dan JCreator, maar Eclipse heeft het vaak wel bij het rechte eind met warnings en errors.

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • Big Womly
  • Registratie: Oktober 2007
  • Laatst online: 01-09 13:39

Big Womly

Live forever, or die trying

Ik zou blij zijn met al die "foutmeldingen" van Eclipse. Het kan van jou alleen maar een betere programmeur maken ;)

When you talk to God it's called prayer, but when God talks to you it's called schizophrenia


Acties:
  • 0 Henk 'm!

  • NetForce1
  • Registratie: November 2001
  • Laatst online: 11-09 18:26

NetForce1

(inspiratie == 0) -> true

Matis schreef op dinsdag 20 juli 2010 @ 09:16:
Waarschijnlijk gaat het al fout bij het feit dat elke class in Java in een appart bestand moet. dat de naam van de klasse heeft (voor public).
Niet voor inner classes, dus daar zit hier het probleem niet in.
Matis schreef op dinsdag 20 juli 2010 @ 09:16:
Daarnaast hoef je bij een extends JFrame geen new() te doen, maar kun je met this werken.
Dat lijkt me toch wat lastig vanuit een static main...
Matis schreef op dinsdag 20 juli 2010 @ 09:16:
Vergeet ook niet dat de eerste methode in je constructor super(); moet zijn.
Niet als de superclass een default constructor heeft, dan wordt die aangeroepen, ook zonder dat je zelf expliciet super() aanroept.

@TS: zoals meer mensen al zeggen hier, zolang je niet post wat de foutmeldingen precies zijn blijft het voor ons ook maar een beetje gissen.

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Matis schreef op dinsdag 20 juli 2010 @ 09:16:
Waarschijnlijk gaat het al fout bij het feit dat elke class in Java in een appart bestand moet. dat de naam van de klasse heeft (voor public).
Dat is helemaal niet verplicht. Hoewel je vziw wel alleen subclasses mag, dus de constructie als hier gebruikt is slechts deels juist (de sub-interface in de tweede klasse).
NetForce1 schreef op dinsdag 20 juli 2010 @ 09:34:
Niet voor inner classes, dus daar zit hier het probleem niet in.
Volgens mij is de programma-class geen subclass van program?

[ Voor 21% gewijzigd door ACM op 20-07-2010 09:37 ]


Acties:
  • 0 Henk 'm!

Verwijderd

In Eclipse heb je bij de default Java Perspective onderaan een tab "Problems" waar je een overzicht van de foutmelding met een vaak zeer duidelijke omschrijving kunt vinden. Je kan vanuit eclipse zelf voorgestelde oplossingen bekijken.

Acties:
  • 0 Henk 'm!

  • NetForce1
  • Registratie: November 2001
  • Laatst online: 11-09 18:26

NetForce1

(inspiratie == 0) -> true

ACM schreef op dinsdag 20 juli 2010 @ 09:35:
[...]

Dat is helemaal niet verplicht. Hoewel je vziw wel alleen subclasses mag, dus de constructie als hier gebruikt is slechts deels juist (de sub-interface in de tweede klasse).

[...]

Volgens mij is de programma-class geen subclass van program?
Alleen public top-level classes moeten in een eigen file, default / protected / private classes kunnen gewoon bij een andere class in een file. Inner classes mogen ook gewoon public zijn. (zie ook http://stackoverflow.com/...ing-classes-in-java-files met de daar gelinkte java spec).

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Afbeeldingslocatie: http://i29.tinypic.com/29ksvf7.png

Het is nu allemaal gelukt met de hulp van alle genoemde dingen in de topic + m'n boek. Maar er zijn nog wel 3 dingen fout die ik niet snap.
Het klopt dat merendeel dat fout was door mij kwam, ik snapte blijkbaar niet alles meer :p Maar zolang zit ik ook nog niet in de Java wereld.

Alvast bedankt voor de hulp, ik begin Eclipse zelf nu ook wat beter te snappen en dat het eigenlijk weinig anders is dan JCreator :p

[ Voor 23% gewijzigd door Verwijderd op 20-07-2010 12:53 ]


Acties:
  • 0 Henk 'm!

  • NetForce1
  • Registratie: November 2001
  • Laatst online: 11-09 18:26

NetForce1

(inspiratie == 0) -> true

De gele lijntjes geven warnings aan, dat zijn niet perse fouten, dus die hoef je niet perse op te lossen om het programma te laten werken.
De rode lijn geeft een error aan, in dit geval dat de methode writeln niet bestaat op System.out. Als je achter de punt na System.out gaat staan en dan ctrl-spatie typt krijg je een lijst met mogelijke methodes die je aan kunt roepen. Je kunt ook in de java api documentatie kijken welke methodes je beschikbaar hebt. In dit geval moet je println gebruiken ipv writeln.

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


Acties:
  • 0 Henk 'm!

  • Standeman
  • Registratie: November 2000
  • Laatst online: 17:50

Standeman

Prutser 1e klasse

Die writeln gaat fout omdat deze niet bestaat.

/spuit 11

[ Voor 4% gewijzigd door Standeman op 20-07-2010 13:10 ]

The ships hung in the sky in much the same way that bricks don’t.


Acties:
  • 0 Henk 'm!

  • truegrit
  • Registratie: Augustus 2004
  • Laatst online: 05-09 13:06
Die fout is uiteraard, zoals hierboven ook al gezegd, makkelijk op te lossen.

De warnings zijn echter nog makkelijker. Klik eens met je muis op het gele icoontje op dezelfde regel als de warning. Je krijgt dan een aantal suggesties. Lees deze eens goed door, hij zal dan iets voorstellen in de trant van "create default guid" en "generate random guid".

Voor meer informatie over die warning, zoek eens op Serialization voor het algemene concept, voor dit specifieke punt kan je zoeken naar serialVersionUID.

Overigens kan je vrijwel altijd klikken op het icoontje aan de linkerkant van de editor om meer informatie over de foutmelding te krijgen, meestal met een aantal oplossingen.

hallo


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 10:03

Creepy

Tactical Espionage Splatterer

Eigenlijk gaan we er vanuit dat je dit soort foutmeldingen zelf kunt lezen en begrijpen. Ook ben je nu bezig dingen te doen die we hier liever niet zien: alleen je code dumpen (met eventueel een foutmelding) en vragen of wij het voor je kunnen oplossen. Dat is nu net niet de bedoeling. Door jezelf eerst wat beter te verdiepen in de materie zou je dit soort fouten prima zelf moeten kunnen oplossen. Mocht je weer iets tegenkomen dat niet lukt, geef dan alleen de relevante code (dus niet alle) met de eventuele foutmelding (gewoon in tekst, een screenshot leest een stuk moeilijker) en wat je zelf al hebt geprobeerd om het probleem op te lossen. Zo kunnen we zien dat je jezelf in de materie hebt verdiept en niet domweg aan het helpdesken bent, en je voorkomt dat we zaken gaan aandragen die je zelf al hebt geprobeerd.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1

Dit topic is gesloten.