Kun yritän ajaa appletviewerillä applettiani applet, ei käynnisty ja status palkkiin tulee teksti, start: applet not initialized. Class tiedosto on samassa tiedostossa kuin html filu, voiko se johtua koodista?
<html>
<applet code= "testes.class" width = "280" height="280">
</applet>
</html>
On html source, koitin katsoa apua jo java.sun.comista mutta en löytänyt mitään.
Class tedosto on samassa tiedostossa?!? siis toi sun html-koodi näyttäis olevan ihan ok. Eli ongelma on siinä sun appletissa.
Se ei nyt mikänä maailman pisin oo niin pasteen sen nyt tähän.
import java.applet.Applet; import java.applet.*; import javax.swing.*; import java.awt.*; import java.lang.*; import java.awt.event.*; import java.awt.event.KeyListener; import javax.swing.*; import java.net.*; import java.io.*; public class testes extends Applet implements KeyListener { /* public void update(Graphics g) { paint(g); } */ public int kentan_vaihto = 0; public int kentanvaihto = 0; public int piirtopinta_x = 0; public int piirtopinta_y = 0; public int pelaajanpaikka_x = 60; public int pelaajanpaikka_y = 60; public int kentan_leveys = 14; public int kentan_korkeus = 14; public int kentta_looppi = 0; public int[] kentta = {1,2,1,2,1,1,2,1,2,3,1,2,1,2,1,1,2,3,2,1,1,2,1,2,1,1,2,1,2,1,1,2,1,2,1,1,2,1,2,1,1,2,1,2,1,1,2,1,2,1,2,1,2,1,1,2,1,2,3,1,2,1,2,1,1,2,3,2,1,1,2,1,2,1,1,2,1,2,1,1,2,1,2,1,1,2,1,2,1,1,2,1,2,1,1,2,1,2,}; public void keyTyped(KeyEvent ke) { } public void keyReleased(KeyEvent ke) { } public void init(){ addKeyListener(this); } Image ruoho = getImage(getCodeBase(), "ruoho.png"); Image puu = getImage(getCodeBase(), "puu.png"); Image vesi = getImage(getCodeBase(), "vesi.png"); Image pelaaja = getImage(getCodeBase(), "pelaaja.png"); public void paint(Graphics g){ while(kentta_looppi < 50){ if(kentta[kentta_looppi + kentanvaihto] == 1){ g.drawImage(ruoho, piirtopinta_x, piirtopinta_y, this); } if(kentta[kentta_looppi + kentanvaihto] == 2){ g.drawImage(puu, piirtopinta_x, piirtopinta_y, this); } if(kentta[kentta_looppi + kentanvaihto] == 3){ g.drawImage(vesi, piirtopinta_x, piirtopinta_y, this); } kentta_looppi++; if(piirtopinta_x > 100){ piirtopinta_y += 20; piirtopinta_x = 0; }else{ piirtopinta_x += 20; } if(piirtopinta_y > 120){ piirtopinta_y = 0; } g.drawImage(pelaaja, 60, 60, this); } } public void keyPressed(KeyEvent ke) { if(ke.getKeyCode()==KeyEvent.VK_LEFT) { if(pelaajanpaikka_x == -20){ pelaajanpaikka_x = 120; }else{ pelaajanpaikka_x -= 20; } repaint(); } if(ke.getKeyCode()==KeyEvent.VK_RIGHT) { if(pelaajanpaikka_x == 120){ pelaajanpaikka_x = 0; }else{ pelaajanpaikka_x += 20; } repaint(); } if(ke.getKeyCode()==KeyEvent.VK_UP) { if(pelaajanpaikka_y == -20){ pelaajanpaikka_y = 120; }else{ pelaajanpaikka_y -= 20; } repaint(); } if(ke.getKeyCode()==KeyEvent.VK_DOWN) { if(pelaajanpaikka_y == -20){ pelaajanpaikka_y = 120; }else{ pelaajanpaikka_y += 20; } repaint(); } } }
Antaa seuraavanlaisen ajonaikaisen virheen
(Näkyy komentokehotteessa kun ajaa appletin):
java.lang.NullPointerException at java.applet.Applet.getCodeBase(Applet.java:106) at testes.<init>(testes.java:38) at java.lang.Class.newInstance0(Native Method) at java.lang.Class.newInstance(Class.java:237) at sun.applet.AppletPanel.createApplet(AppletPanel.java:579) at sun.applet.AppletPanel.runLoader(AppletPanel.java:515) at sun.applet.AppletPanel.run(AppletPanel.java:293) at java.lang.Thread.run(Thread.java:484)
Korjausehdotus:
Image ruoho = null; // Muutettu Image puu = null; // Muutettu Image vesi = null; // Muutettu Image pelaaja = null; // Muutettu public void init(){ // Nämä lisätään *********************** ruoho = getImage(getCodeBase(), "ruoho.png"); puu = getImage(getCodeBase(), "puu.png"); vesi = getImage(getCodeBase(), "vesi.png"); pelaaja = getImage(getCodeBase(), "pelaaja.png"); // ***************************************** addKeyListener(this); }
Sen jälkeen avaa appletin
Sitten pieni arvaus koodin toiminnasta pitäisiköhän lisätä seuraava:
public void paint(Graphics g){ // tämän aliohjelman alkuun kentta_looppi=0; // tämä lisätty // muuten samanlainen
Aihe on jo aika vanha, joten et voi enää vastata siihen.