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 samanlainenAihe on jo aika vanha, joten et voi enää vastata siihen.