Java applet - ClassFormatError - de localhoston semmi baja
Nem nagyon foglalkoztam eddig Java fejlesztéssel, inkább csak kalapálással. A sors úgy hozta, hogy most el kéne sajátítanom ezt-azt. Például a listenerek használatát. Erre írtam is egy kódot, amely tkp. annyit csdinál, hogy kiírja, milyen egérműveletet végeztél, ott ahol végezted, illetőleg kiírja a leütött billentyű ASCII kódját.
Localhoston gyönyörűen ment, a feketeleves megint akkor jött, amikor feltöltöttem szerverre. Ott ugyanis elszáll:
java.lang.ClassFormatError: Incompatible magic value 1013478509 in class file CEgerFigyelom
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at sun.applet.AppletClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.applet.AppletClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at eventproba.init(eventproba.java:13)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Ha pedig ráfrissítek a böngészőre, ezt is megkapom a konzolon:
java.lang.ClassFormatError: CEgerFigyelom
at eventproba.init(eventproba.java:13)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
A kód nem titkos, be is másolom az egészet. Nagyon régóta szenvedek már ennek a kis programnak a működésre bírásával, nagyon megköszönném, ha valaki tudna adni valami iránymutatást: mégis mit csinálok rosszul?
Mindenkinek köszönöm előre is.
mravo
■ Localhoston gyönyörűen ment, a feketeleves megint akkor jött, amikor feltöltöttem szerverre. Ott ugyanis elszáll:
java.lang.ClassFormatError: Incompatible magic value 1013478509 in class file CEgerFigyelom
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at sun.applet.AppletClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.applet.AppletClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at eventproba.init(eventproba.java:13)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Ha pedig ráfrissítek a böngészőre, ezt is megkapom a konzolon:
java.lang.ClassFormatError: CEgerFigyelom
at eventproba.init(eventproba.java:13)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
A kód nem titkos, be is másolom az egészet. Nagyon régóta szenvedek már ennek a kis programnak a működésre bírásával, nagyon megköszönném, ha valaki tudna adni valami iránymutatást: mégis mit csinálok rosszul?
Mindenkinek köszönöm előre is.
mravo
import java.applet.*;
import java.awt.*;
import java.awt.Window.*;
import java.awt.event.*;
import java.awt.Graphics;
public class eventproba extends Applet {
static Graphics gh;
public void init() {
setFocusable(true);
addMouseListener(new CEgerFigyelom());
addKeyListener(new CBillentyuleutesFigyelom());
gh = getGraphics();
}
public void paint(Graphics g) {
g.drawString("helló", 100, 100);
}
public static void drawingline() {
gh.drawLine(100, 100, 400, 500);
}
public static void labeller(int x, int y, int ev) {
switch (ev) {
case 1:
gh.setColor(Color.green);
gh.drawString("kattintottál itt", x, y);
break;
case 2:
gh.setColor(Color.magenta);
gh.drawString("beléptél az appletbe itt", x, y);
break;
case 3:
gh.setColor(Color.blue);
gh.drawString("kiléptél az appletből itt", x, y);
break;
case 4:
gh.setColor(Color.red);
gh.drawString("egeret nyomtál itt", x, y);
break;
case 5:
gh.setColor(Color.orange);
gh.drawString("felengedted itt", x, y);
break;
}
}
public static void pressedkeylabeller(int ch) {
gh.setColor(Color.black);
gh.fillRect(0, 0, 50, 50);
gh.setColor(Color.white);
String sch;
sch = ""+ch+"";
gh.drawString(sch, 15, 15);
}
}
class CEgerFigyelom extends eventproba implements MouseListener {
public void mouseClicked(MouseEvent e) {
System.out.println("kattintottál");
System.out.println("egeret nyomtál");
int x = e.getX();
int y = e.getY();
labeller(x, y, 1);
}
public void mouseEntered(MouseEvent e) {
System.out.println("beléptél az appletbe");
System.out.println("egeret nyomtál");
int x = e.getX();
int y = e.getY();
labeller(x, y, 2);
}
public void mouseExited(MouseEvent e) {
System.out.println("kiléptél az appletből");
System.out.println("egeret nyomtál");
int x = e.getX();
int y = e.getY();
labeller(x, y, 3);
}
public void mousePressed(MouseEvent e) {
System.out.println("egeret nyomtál");
int x = e.getX();
int y = e.getY();
labeller(x, y, 4);
}
public void mouseReleased(MouseEvent e) {
System.out.println("felengedted az egeret");
System.out.println("egeret nyomtál");
int x = e.getX();
int y = e.getY();
labeller(x, y, 5);
}
}
class CBillentyuleutesFigyelom extends eventproba implements KeyListener {
public void keyPressed(KeyEvent e) {
System.out.println("billentyű lett lenyomva");
int ch = e.getKeyCode();
pressedkeylabeller(ch);
}
public void keyReleased(KeyEvent e) {
}
public void keyTyped(KeyEvent e) {
}
}
Pontositas
Egy-ket tisztazando kerdes:
- Localhost mit jelent nalad? Milyen OS hanyas verzioju jdk, ki a jdk gyartoja (sun, ibm, bea, stb.)
- Mi az a szerver? Mit jelent, hogy "Ott ugyanis elszáll"? Az applet kliens oldalon fut, bongeszoben. Szervernek elmeletileg nincs befojasa a dologba.
- Milyen bongeszo alatt probaltad? A bongeszo ala milyen java plugin van berakva?
Szvsz valami verzio/gyarto elcsuszas lehet, es az okozza a bajt.
Pontosítások
WIN XP SP2 operációs rendszer
Sun jdk1.6.0_05
Szerver:
A szerver alatt csak annyit értettem, hogy a class fájlt feltöltve a tárhelyre. Erre én is gondoltam egyébként, hogy esetleg megsérül útközben, de ez ellen mit lehet tenni? Esetleg ha Jar-ba becsomagolom, az megvédi?
Böngésző:
FF 2.0.0.13, illetve IE 7.0.5730.11 - egyik alatt sem megy.
Java Platform Standard Edition - Version 6 Update 5, gyártója a Sun, mindkét böngészőnél
Köszi.
Link
Ki fogtok röhögni + van egy másik kérdésem is
Meg lett a hiba.
A fordító készített egy CEgerFigyelom.class-t, illetve egy CBillentyuzetFigyelom.class-t is, amelyekre én nem számítottam. Ezeket nem FTP-ztem fel, így persze hogy nem futott. Mostmár oké.
Azért a link: http://pbo.extra.hu/java/egerfigyelo/eventproba.html
Elküldöm, mert rögtön lenne egy másik kérdésem is. Java2 platformon sehogy nem tudom működésre bírni. Localhoston se, és így sem.
A következő "nagyon komoly" appletet sem sikerült Java2 platformon futásra bírni:
Bocsánat ezért a kezdő kérdésért, ezt is megprobáltam kiguglizni, sajnos nem jártam sikerrel. Az idő viszont nagyon szorít:(
Előre is köszönöm!