Avatar billede aligncenter Nybegynder
29. maj 2001 - 09:27 Der 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
Avatar billede agermose Nybegynder
29. maj 2001 - 09:45 #1
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
Avatar billede aligncenter Nybegynder
29. maj 2001 - 10:20 #2
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
Avatar billede aligncenter Nybegynder
29. maj 2001 - 10:21 #3
/*
* WormViewer.java
*
* Created on 26. maj 2001, 22:56
*/


/**
*
* @author 
* @version
*/
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.awt.image.BufferedImage;

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 update(Graphics g)    {
 
  //g.setColor(Color.white);
  //g.fillRect(0,0,200,200);
 
  G.setColor(Color.white);
 
  G.fillRect(0,0,400,400);
 
  G.setColor(Color.black);
 
 
 
  int x[] = w.XValues();
  int y[] = w.YValues();
 
  int i;
 
    for(i = 0;i < x.length;i++)    {
     
      G.fillRect(x[i],y[i],5,5);
     
    }
 
  //x = enemy.XValues();
  //y = enemy.YValues();
 
 
 
    for(i = 0;i < x.length;i++)    {
     
      G.fillRect(x[i],y[i],5,5);
     
    }
 
  G.setColor(Color.cyan);
  if(paint)    {
    for(i = 0;i < map.size() ;i++)    {
       
        Wall w = (Wall)map.elementAt(i);
        Point p = w.getPosition();
       
        G.drawRect(p.x,p.y,5,5);
    }
    }
   
   
    G.setColor(Color.black);
   
    if(paint)    {
    for(i = 0;i < food.size() ;i++)    {
       
        Food f = (Food)food.elementAt(i);
        Point p = f.getPosition();
        G.drawString(i + \"\",p.x,p.y);
        G.drawRect(p.x,p.y,5,5);
    }
   
    G.setColor(Color.red);
    for(i = 0;i < enemys.size() ;i++)    {
        Worm w1 = (Worm)enemys.elementAt(i);
        x = w1.XValues();
        y = w1.YValues();
       
       
        //G.drawString(i + \"\",p.x,p.y);
        G.drawRect(x[0],y[0],5,5);
    }
   
   
   
    }
   
   
   
  g.drawImage(b,0,0,this);
 
 
  }
 
  public void collisionCheck()    {
 
    int[] d = w.XValues();
    int[] f = w.YValues();
   
    int x = d[0];
    int y = f[0];
   
   
   
    Point p = new Point(x,y);
   
   
    int i;
    for(i = 0;i < map.size();i++)    {
        Wall w2 = (Wall)map.elementAt(i);
        Point p1 = w2.getPosition();
        if (x == p1.x && y == p1.y)    {
        thread.stop();
        }
    }
   
   

    for(i = 1;i < d.length;i++)    {
       
       
        if (x == d[i] && y == f[i])    {
        //thread.stop()
        System.out.println(\"eat myself\");
        thread.stop();
        }
    }
   
  for(i = 0;i < food.size();i++)    {
        Food f1 = (Food)food.elementAt(i);
        Point p1 = f1.getPosition();
        if (x == p1.x && y == p1.y)    {
        System.out.println(\"food\");
        w.grow();w.grow();w.grow();w.grow();
        food.removeElementAt(i);
        }
    }
 
 
  }
   
   
    public void collisionCheckEnemy()    {
 
   
    int j = 0;
   
    while (j < enemys.size())  {
   
    Worm w1 = (Worm)enemys.elementAt(j);
   
    int[] d = w1.XValues();
    int[] f = w1.YValues();
   
    int x = d[0];
    int y = f[0];
   
    Point p = new Point(x,y);
   
   
    int i;
    for(i = 0;i < map.size();i++)    {
        Wall w2 = (Wall)map.elementAt(i);
        Point p1 = w2.getPosition();
        if (x == p1.x && y == p1.y)    {
        System.out.print(\"enemy dead\");
        enemys.removeElementAt(j);
        }
    }
   
    for(i = 0;i < food.size();i++)    {
        Food f1 = (Food)food.elementAt(i);
        Point p1 = f1.getPosition();
        if (x == p1.x && y == p1.y)    {
        System.out.println(\"food\");
        food.removeElementAt(i);
        }
    }

    j++; 
   
    }//end while
 
 
  }
   
   
   
   
    private void exitForm(java.awt.event.WindowEvent evt) {
        System.exit (0);
    }
   
   
   
   
    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;
   
  }//end switch
  }//end for   
}


}// end wormviewer
Avatar billede aligncenter Nybegynder
29. maj 2001 - 10:23 #4
nu hvor vi er igeng hvad med runnable den er jo blevet skrabet ned til run()

hvordan implementerer jeg tråden uden at få deprecated fejlbeskeder
Avatar billede agermose Nybegynder
29. maj 2001 - 10:36 #5
image er abstrakt i både 1.1 og 1.2 Et image har altid været noget man loadede i en platformsafhængig måde, f.eks. gennem appletcontext.getImage()

Runnable har heller ikke ændret sig mellem 1.1 og 1.2 I begge tilfælde er det et interface med én methode run()
Avatar billede logical Nybegynder
29. maj 2001 - 17:22 #6
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.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester