29. maj 2001 - 09:27Der er
5 kommentarer og 1 løsning
fejlbesked fra explorer 5.0 ?
Hvad sker det her ?
Microsoft (R) VM for Java, 5.0 Release 5.0.0.3802 ============================================== ? hjælp c ryd f kør afsluttere g Hent affald m hukommelsesbrug q afslut t thread list ============================================== com.ms.security.SecurityExceptionEx[WormViewer.init]: java.io.IOException: bad path: C:\\datanom\\worm\\java\\awt\\image\\BufferedImage.class at com/ms/security/permissions/FileIOPermission.check at com/ms/security/PolicyEngine.deepCheck at com/ms/security/PolicyEngine.checkPermission at com/ms/security/StandardSecurityManager.chk at com/ms/security/StandardSecurityManager.checkRead at java/io/File.isDirectory at sun/net/www/protocol/file/FileURLConnection.connect at sun/net/www/protocol/file/FileURLConnection.getInputStream at com/ms/vm/loader/ResourceLoader.getURLData at com/ms/vm/loader/ResourceLoader.getCodebaseRelativeData at com/ms/vm/loader/ResourceLoader.getClassData at com/ms/vm/loader/URLClassLoader.findClass at com/ms/vm/loader/URLClassLoader.loadClass at java/lang/ClassLoader.loadClassInternal at WormViewer.init at com/ms/applet/AppletPanel.securedCall0 at com/ms/applet/AppletPanel.securedCall at com/ms/applet/AppletPanel.processSentEvent at com/ms/applet/AppletPanel.processSentEvent at com/ms/applet/AppletPanel.run at java/lang/Thread.run java.lang.ClassNotFoundException: java.awt.image.BufferedImage at com/ms/vm/loader/URLClassLoader.loadClass at java/lang/ClassLoader.loadClassInternal at WormViewer.init at com/ms/applet/AppletPanel.securedCall0 at com/ms/applet/AppletPanel.securedCall at com/ms/applet/AppletPanel.processSentEvent at com/ms/applet/AppletPanel.processSentEvent at com/ms/applet/AppletPanel.run at java/lang/Thread.run
det første lyder som om din path til image er forkert format, men den kodestump kan du jo lige poste.
Den anden skyldes, at BufferedImage er noget der er kommet til java 1.2 og derfor typisk ikke understøttet i browsere uden java-plugin. Disse understøtter typisk kun java 1.1
yes det forstår jeg. men det da tåbeligt da Image klassen ikke var abstract og det må da genere en masse fejl på gsmle applets, kender du et sted man kan hente en opdatering
public class WormViewer extends java.applet.Applet implements Runnable,KeyListener{ Thread thread; Vector map,food,enemys; Wall wall; Point s = new Point(30,30); boolean paint = false; private static Graphics G; private static BufferedImage b ; private Worm w = new Worm(50,50); //private Worm enemy = new Worm(); boolean west = false; boolean east = false; boolean north = false; boolean south = false;
// End of variables declaration /** Initializes the applet WormViewer */ public void init () { initComponents (); }
/** This method is called from within the init() method to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the FormEditor. */ private void initComponents() { setLayout(new java.awt.BorderLayout());
addKeyListener(this);
b = new BufferedImage(400, 400, 1); G = b.createGraphics();
map = new Vector(); food = new Vector(); enemys = new Vector(); makeMap();
repaint(); }
public void keyTyped(KeyEvent e) { System.out.println(e.getKeyCode());
}
/**Handle the key pressed event from the text field. */ public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == 37) { if (!east) { west = true; east = false; north = false; south = false; } }
if (e.getKeyCode() == 38) { if (!south) { north = true; east = false; west = false; south = false; } }
if (e.getKeyCode() == 39) { //west if (!west) { east = true; west = false; north = false; south = false; } }
if (e.getKeyCode() == 40) { if (!north) { south = true; east = false; west = false; north = false; } } System.out.println(e.getKeyCode()); }
/** Handle the key released event from the text field. */ public void keyReleased(KeyEvent e) {
}
// Variables declaration - do not modify // End of variables declaration public void makeMap() { map = MapBuilder.buildLevel1(); food = MapBuilder.buildLevel1FoodItems(); enemys = MapBuilder.buildLevel1EnemyItems(); paint = true;
public void start() { if (thread == null) { thread = new Thread(this); thread.start(); } }
public void stop() { if (thread != null) { thread.stop(); thread = null; } }
public void run() {
while (true) {
if (west) { w.moveWest(); collisionCheck(); }
if (east) {
w.moveEast(); collisionCheck(); }
if (north) {
w.moveNorth(); collisionCheck(); }
if (south) {
w.moveSouth(); collisionCheck(); }
moveEnemyWorm(); collisionCheckEnemy();
repaint(); try { Thread.sleep(100); }
catch (InterruptedException e) {}
} //end while
}
public static int randomInt(int a, int b) {
if (a > b) throw new IllegalArgumentException(); if (a == b) return a; double x = Math.random(); int n = a + (int)(x * (b - a + 1)); if (n > b) n = b; return n; }//end ran
public void moveEnemyWorm() {
int i; for(i = 0;i < enemys.size();i++) {
Worm w1 = (Worm)enemys.elementAt(i);
int r = randomInt(1,4);
switch (r) { case 1: w1.moveEast(); break; case 2: w1.moveWest(); break; case 3: w1.moveNorth(); break; case 4: w1.moveSouth(); break;
Runnable og tråde har ikke ændret sig meget, men en ting.
Man bør ikke længere kalde stop() direkte på en tråd. Det var en potentiel dødssejler hvad angik låste applikationer.. I din applets stopmetode kalder du decideret stop på tråden, og din run() metode kører da også while(true).
Nu om dage vil man i run køre: while(running){...} og i stop sige : running = false; og i start sige: running = true; Så kan trådens whileløkke terminere pænt.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.