Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Java / missing type -virhe

Sivun loppuun

kahviKaakao [21.04.2013 14:36:29]

#

Olen kopsannut omalle eclipselle JAVA-kirjasta (Docendo, 2010, sinivalk. kansi jossa kahvikupin kuva)4.nnestä luvusta NOPPA -nimisen ohjelman, joka koostuu MVC -mallin mukaisesti 3:sta eri ohjelmasta. Mitään virhettä ei näyttäisi ohjelmissa olevan, mutta kun yritän ajaa sitä, tulee virheilmoitus: "Unresolved compilation problem: The method rekisteröiOhjain(NopanOhjain) from the type NopanGUI refers to the missing type NopanOhjain".
Myös Pistelaskuri -ohjelmassa samassa kirjassa tulee samanlainen virheilmoitus.
Onko kellään mitään hajua mistä tämä voisi johtua?

Metabolix [22.04.2013 17:35:00]

#

Jos mainitsemasi luokka (NopanOhjain) on mielestäsi olemassa, olet selvästikin laittanut koodit jotenkin vääriin tiedostoihin kehitysympäristössäsi. Ainakaan ohjelma ei voi koostua kolmesta eri ohjelmasta, vaan kaikkien luokkien pitää olla samassa ohjelmassa. Aloita nyt ihan uusi ohjelma (program, project, solution, whatever) ja lisää siihen valikosta vain uusia luokkia (class).

Jos taas luokkaa NopanOhjain ei oikeasti ole, ilmeisesti olet kopioinut koodin väärin kirjastasi tai kirjassa on puutteellinen esimerkki.

kahviKaakao [23.04.2013 16:49:18]

#

Niin siis, taisin tarkoittaa että ohjelma koostuu 3:sta eri luokasta (sori, olen aloittelija). Noppa, NopanGUI ja NopanOhjain, ja ne ovat tietenkin samassa pakkauksessa. Kyseisen kirjan esimerkkiohjelmat löytyvät netistä, ja olen ne sieltä ladannut omalle eclipselle, joten niissä tuskin sinällään on mitään virheitä. Jotenkin tuli mieleen, että jos nämä 3 luokkaa eivät jostain syystä kuitenkaan osaa kommunikoida keskenään, vaikka olen ne Classpath-jutut laittanut kuntoon... Tässä se NopanOhjain -luokka, joka heittää virheen:

package javakoulu.luku4;

public class NopanOhjain {

  private Noppa malli;
  private NopanGUI näkymä;

  public NopanOhjain(Noppa malli, NopanGUI näkymä) {
    this.malli = malli;
    this.näkymä = näkymä;
  }

  public static void main(String[] args) {
    Noppa malli = new Noppa();
    NopanGUI näkymä = new NopanGUI();
    NopanOhjain ohjain = new NopanOhjain(malli, näkymä);
    näkymä.rekisteröiOhjain(ohjain);
  }

  public void heitto() {
    näkymä.asetaSilmäluku(malli.annaSilmäluku());
  }

}

Mod. lisäsi kooditagit!

Codezebra [24.04.2013 14:22:39]

#

Itse latasin kyseiset koodit ja alkoi toimimaan ekalla kerralla ilman mitään virheitä.

Tarkista onko ne tiedostot {projektikansio}/src/javakoulu/luku4/ kansiossa.

kahviKaakao [25.04.2013 14:44:10]

#

Tiedostojen sijainti on C:\eclipse workspace\NopanOhjain-projekti\javakoulu\luku4\NopanOhjain.java. Eli samassa paikassa missä kaikki muutkin mun projektit. Ja muut toimii.

Codezebra [29.04.2013 11:23:54]

#

Oisko mitenkään...:
- Ääkköset (Vääränlainen Text file encoding)
- Liian vanha Java versio

kahviKaakao [02.05.2013 10:33:43]

#

Joo ei oo mitään tommosta. Uusimmat versiot on. Mulla on noin 100 projektia eclipsessä. Kaikki muut kyllä toimii.

Metabolix [02.05.2013 10:50:22]

#

Jos menet rekisteröiOhjain-metodin määrittelyn kohdalle, Eclipsen pitäisi osata kertoa, mihin NopanOhjain kyseisellä rivillä viittaa. Käy tarkistamassa, että Eclipse tunnistaa sen oikein. Katso myös, ettei koodin kääntämisestä tule mitään virheilmoituksia. Eclipse on vähän outo, kun siinä ohjelman voi yrittää ajaa, vaikka sitä ei olisi edes käännetty kokonaan. Jos näistä ei ole apua, voisit kuitenkin kokeilla vielä tehdä uuden projektin.

kahviKaakao [02.05.2013 12:45:29]

#

Kun tutkin virheitä tarkemmin, löytyi myös sellainen virheilmoitus kuin: "A cycle was detected in the build path of project". Googlasin sitä, ja löytyi tällainen neuvo: "You can adjust the severity level of circular dependencies in
Preferences > Java > Compiler > Building > Build path problems > Circular dependencies". Muutin ko. kohdassa Error-sanan Warning-sanaksi, ja se auttoi.
Eli ilmeisesti ohjelmassa ei mitään virhettä ollutkaan, Build Path -kriteerit oli vaan vedetty liian tiukaksi tms.


Sivun alkuun

Vastaus

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

Tietoa sivustosta