Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Java: Mikä puuttuu?

Sivun loppuun

TVdata [05.01.2012 17:36:28]

#

package javaapplication18;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


public class NewJApplet extends JApplet {


@Override
public void init() {
setLayout(new GridLayout(1,1));
JButton kokeile = new JButton("Kokeile");
kokeile.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
starttaa();
}
});
add.(kokeile);
}
private void starttaa() {

//Koodia.

System.exit(0);
}

}

add.(kokeile); rivillä on virhe identifier expected .
Mikä edes on tuo identifier?
Siitä on monia keskusteluja netissä mutta tapaukset ovat erilaisia.
Kaiken kukkuraksi koodi on kirjasta.

Grez [05.01.2012 17:39:27]

#

Oisko siinä piste liikaa.. add(kokeile)

TVdata [05.01.2012 17:43:47]

#

Okei, joka tapauksessa mitä tuo virhe tarkoittaa?

Grez [05.01.2012 17:47:31]

#

Se tarkoittaa, että koodissa on kirjoitusvirhe. Pisteen jälkeen pitäisi tulla tunniste, mutta sitä ei tulekaan vaan tuleekin sulkumerkki. Siis tuollaista tarvittaisiin, että se olisi edes syntaksiltaan oikea. add on ilmeisesti metodi, joten sille ei käytännössä voisi edes antaa pistettä ja tunnistetta, mutta kääntäjä ilmeisesti tarkistaa syntaksivirheet ensin ja muut virheet vasta kun se on saanut syntaksista selvää.

(Joku joka osaa javaa saa korjata jos meni pieleen :D )

Metabolix [05.01.2012 17:53:02]

#

Identifier on suomeksi tunniste eli muuttujan, funktion tai muun nimi.

Koko virheilmoitushan näyttää tältä:

NewJApplet.java:19: error: <identifier> expected
add.(kokeile);
    ^

Tässä ^-merkki osoittaa, missä kohti virhe tarkalleen on: pisteen jälkeen. Javassa pisteen jälkeen tulee lähes poikkeuksetta tunniste.

Grez on oikeassa Java-kääntäjän toiminnasta: ensin syntaksi, sitten muut virheet. Niinpä kääntäjä ei osaa sanoa, että virhe on ylimääräinen piste, vaan kääntäjä hyväksyy pisteen, joka voisi toisessa tilanteessa ollakin oikein, ja löytää virheen vasta seuraavasta sulkumerkistä.

Vastaavasti jos pisteen perään lisää tunnisteen, saadaan toisenlainen virhe: ennen pistettä täytyy olla muuttuja eikä metodin nimi, joten kääntäjä ilmoittaa, että ei ole olemassa add-nimistä muuttujaa.

NewJApplet.java:19: error: cannot find symbol
add.jotain(kokeile);
^
  symbol:   variable add
  location: class NewJApplet

ljlassi [05.01.2012 23:22:44]

#

Kannattaa muuten käyttää jotain esimerkiksi netistä löytyvää sanakirjaa jos on vaikeuksia ymmärtää virheviestejä yms. Vaikkapa http://ilmainensanakirja.fi/

TVdata [08.01.2012 19:49:01]

#

Mod. yhdisti keskustelut. Uusi otsikko: Painike ei toimi

Panin ohjelman ja html:n webhotelliin mutta ruudulla on pelkkää valkoista.
Omalla koneella painikketta ei ole, vaan punainen kehys jossa lukee "Virhe. Lisätietoja..." ja ikkuna jossa lukee "Ohjelman suorittaminen epäonnistui." . (Safari ja Mac os x lion)
Java-konsolissa lukee tämä.

java.lang.NoClassDefFoundError: peli (wrong name: sovelma/NewJApplet)
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
	at sun.plugin2.applet.Applet2ClassLoader.findClass(Applet2ClassLoader.java:247)
	at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Plugin2ClassLoader.java:249)
	at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Plugin2ClassLoader.java:179)
	at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Plugin2ClassLoader.java:160)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
	at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Plugin2ClassLoader.java:678)
	at sun.plugin2.applet.Plugin2Manager.createApplet(Plugin2Manager.java:3045)
	at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Plugin2Manager.java:1497)
	at java.lang.Thread.run(Thread.java:680)
Poikkeus: java.lang.NoClassDefFoundError: peli (wrong name: sovelma/NewJApplet)

Metabolix [08.01.2012 19:55:04]

#

Luultavasti kirjoittamasi HTML-koodi on viallinen: käsket ladata luokan peli, vaikka pitäisi ladata luokka sovelma/NewJApplet.

TVdata [09.01.2012 15:35:14]

#

Pitäisikö ohjelman olla sovelma kansiossa?

tesmu [10.01.2012 08:02:48]

#

Olisi varmaan myös koodin selkeyden takia mukavaa jos käytettäisi sisennyksiä...

TVdata [10.01.2012 19:11:23]

#

Kiitos, sain nyt ohjelman toimimaan.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta