0

I am new to applet and I have a problem access denied java.lang.runtimepermission exitvm.0 it shows me this error on Safari, Firefox doesn't show me anything at all, I have no idea why is so, it runs perfectly on my Eclipse but it doesn't work on web browser Any help? Thanks.

    package test;



import javax.imageio.ImageIO;
import javax.swing.*;

import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.image.BufferedImage;
import java.awt.image.FilteredImageSource;
import java.awt.image.ImageFilter;
import java.awt.image.ImageProducer;
import java.awt.image.RGBImageFilter;
import java.io.File;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.net.URL;
import java.lang.reflect.Method;
public class app extends JApplet{
    URL url;
    String methodName;
    String f1="http://localhost/webpage/upload/suit.jpeg";
    String f2="http://localhost/webpage/customers/download.jpeg";
    boolean setR=false;
    Image image=null;
    int x=0;
    int y=0;
    int endX;
    int endY;
    int center1;
    int center2;
    int imageWidth;
    int imageHeight;
    boolean clicked=false;
    int initialX=0;
    int initialY=0;
    public void init(){
        load();
    }
    public void start(){
        load();
    }
    public void load(){
        //String methodName = method.getName();

     //   try{
            Image img= getImage(getDocumentBase(), f1);
            makeColorTransparent(img,Color.white);
            initialX=img.getWidth(null);
            initialY=img.getHeight(null);
      //  }//catch (InvocationTargetException ex) {
            //ex.getTargetException();

       // }
    }
      public Image makeColorTransparent
        (Image im, final Color color) {
        ImageFilter filter = new RGBImageFilter() {
          // the color we are looking for... Alpha bits are set to opaque
          public int markerRGB = color.getRGB() | 0xFF000000;

          public final int filterRGB(int x, int y, int rgb) {
            if ( ( rgb | 0xFF000000 ) == markerRGB ) {
              // Mark the alpha bits as zero - transparent
              return 0x00FFFFFF & rgb;
              }
            else {
              // nothing to do
              return rgb;
              }
            }
          }; 

        ImageProducer ip = new FilteredImageSource(im.getSource(), filter);
        image=Toolkit.getDefaultToolkit().createImage(ip);      
        drawing();
        return Toolkit.getDefaultToolkit().createImage(ip);
        }
        public void drawing(){
            Image img=null;
            //File f=new File("./src/trans1/download.jpeg");
            draw2();
            //buff=ImageIO.read(img);
            //try {
              //  img = ImageIO.read(new File("download.jpeg"));
        //  } catch (IOException e) {
        //  }
            BufferedImage buff=new BufferedImage(100, 100, BufferedImage.TYPE_INT_ARGB);
            //buff=img;
            ImageIcon pic1=null;
            //try {
            //  pic1 = new ImageIcon(ImageIO.read(new File("./src/trans1/download.jpeg")));
                System.out.println("I am working");
        //  } catch (IOException e) {
                // TODO Auto-generated catch block
            //  e.printStackTrace();
            //}
            JFrame frame=new JFrame();
            Graphics2D bGr = buff.createGraphics();
            bGr.drawImage(img, 0, 0, null);
            bGr.dispose();
            buff.getGraphics().drawImage(img, 100, 100, null);

            //JLabel label1=new JLabel(pic1);
            frame.setSize(300,300);
        //  frame.add(label1);
        //  this.add(label1);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.add(this);
            this.addMouseListener(new MouseL());
            this.addMouseMotionListener(new MouseList());
            frame.setVisible(true);
        }
         public void draw2(){
             BufferedImage buff;
             int type;
             int width;
             int height;
             try {
                   //  buff=new BufferedImage(100, 100, BufferedImage.TYPE_INT_ARGB);
                     url = new URL (getCodeBase(), f2 );
                   buff=ImageIO.read(url);
                   Image img=ImageIO.read(url);
                   type=buff.getType();
                   width=buff.getWidth();
                   height=buff.getHeight();
                   Graphics g=buff.getGraphics();
                   g.drawImage(img, width, height, null);

           } catch (IOException e) {
                   // TODO Auto-generated catch block
                   e.printStackTrace();
           }

     }
          public void draw3(Graphics g, Image img){
              g.drawImage(img, 0, 0, null);
             // g.drawImage(img, img.getWidth(null), img.getWidth(null), null);
          }
      public void paint(Graphics g){
            Image img=getImage(getDocumentBase(), f2);
            draw3(g,img);
            draw2();
             if(image == null) return;
             if(clicked==false){
                imageWidth = image.getWidth(this);
                imageHeight = image.getHeight(this);}        
                endX=x+imageWidth;
                endY=y+imageHeight;
                g.drawImage(image, x, y, imageWidth, imageHeight, this );
                if(setR){
                    g.drawRect(x, y, imageWidth, imageHeight);
                    center1=(x+endX)/2;
                    center2=(y+endY)/2;
                    g.drawRect(center1, y, 3, 3);
                    g.drawRect(center1,endY, 3,3);
                    g.drawRect(x, center2, 3, 3);
                    g.drawRect(endX, center2, 3, 3);
                }
      }
        int inX;
        int inY;
        int subX;
        int subY;
        int diffX;
        int diffY;
        long ratio;
        boolean isSet=false;
        class MouseList implements MouseMotionListener{
            @Override
            public void mouseDragged(MouseEvent arg0) {
                setR=true;    
                if(isSet==true){
                        subX=arg0.getX();
                        subY=arg0.getY();
                        diffX=subX-inX;
                        diffY=subY-inY;
                        x=x+diffX;
                        y=y+diffY;
                        repaint();
                    inX=arg0.getX();
                    inY=arg0.getY();
                    //setR=false;
                    repaint();
                }else{
                if(clicked==true){
                            subY=arg0.getY();
                            diffY=subY-inY;
                            if(ratio==0){
                                ratio=1;
                            }
                            diffX=(int) (diffY/ratio);
                            y=y-diffY;
                            x=x-diffX;
                            imageHeight=imageHeight+diffY;
                            imageWidth=imageWidth+diffX;
                            //size of the screen
                            Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();

                            //height of the task bar
                            Insets scnMax = Toolkit.getDefaultToolkit().getScreenInsets(getGraphicsConfiguration());
                            int taskBarSize = scnMax.bottom;

                            //available size of the screen 
                            //setLocation(screenSize.width - getWidth(), screenSize.height - taskBarSize - getHeight());
                            if(imageHeight<0 || imageWidth<0 || imageWidth>=screenSize.width ||imageHeight>=screenSize.height){
                                imageHeight=initialY;
                                x=0;
                                y=0;
                                imageWidth=initialX;
                            }
                            setR=false;
                            repaint();          
                }   
            }
        }
            @Override
            public void mouseMoved(MouseEvent arg0) {
                // TODO Auto-generated method stub

            }

        }
        class MouseL implements MouseListener{

            @Override
            public void mouseClicked(MouseEvent arg0) {
                // TODO Auto-generated method stub
                if((arg0.getX()<x &&arg0.getY()<y)||(arg0.getX()<x && arg0.getY()>endY)||(arg0.getX()>endX && arg0.getY()<y)||(arg0.getX()>endX && arg0.getY()>endY)){
                    System.out.println(" 1 I am working");
                    setR=false;
                    repaint();
                }

            }

            @Override
            public void mouseEntered(MouseEvent arg0) {
            /*  if(arg0.getX()>x && arg0.getX()<endX && arg0.getY()>y && arg0.getY()<endY){
                    if(isSet==false){
                        inX=arg0.getX();
                        inY=arg0.getY();
                        isSet=true;
                    }
                }*/
                if(arg0.getX()>x && arg0.getX()<endX && arg0.getY()>y && arg0.getY()<endY){
                    System.out.println("Yes i am here");
                    Cursor c=new Cursor(Cursor.HAND_CURSOR);
                    setCursor(c);
                }else if((arg0.getX()>=center1 && arg0.getX()<=center1+3)&&((arg0.getY()>=y && arg0.getY()<=y+3)||(arg0.getY()>=endY&& arg0.getY()<=endY+3))||(arg0.getY()>=center2 && arg0.getY()<=center2+3)&&((arg0.getX()>=x && arg0.getX()<=x+3)||(arg0.getX()>=endX && arg0.getX()<=endX+3))){
                    System.out.println("No i am here");
                    Cursor c=new Cursor(Cursor.N_RESIZE_CURSOR);
                    setCursor(c);
                }/*else if(arg0.getX()<x || arg0.getX()>endX && arg0.getY()<y || arg0.getY()>endY){
                    System.out.println(" 1 I am working");
                    setR=false;
                    repaint();
                }*/

            }

            @Override
            public void mouseExited(MouseEvent arg0) {
                // TODO Auto-generated method stub

            }

            @Override
            public void mousePressed(MouseEvent arg0) {
                System.out.println(x+" "+y+" "+endX+" "+endY+" "+arg0.getX()+" "+arg0.getY());
                if(arg0.getX()>x && arg0.getX()<endX && arg0.getY()>y && arg0.getY()<endY){
                    if(isSet==false){
                        inX=arg0.getX();
                        inY=arg0.getY();
                        isSet=true;
                    }
                    //repaint();
                    System.out.println("2");
                }
                else if((arg0.getX()>=center1 && arg0.getX()<=center1+3)&&((arg0.getY()>=y && arg0.getY()<=y+3)||(arg0.getY()>=endY&& arg0.getY()<=endY+3))||(arg0.getY()>=center2 && arg0.getY()<=center2+3)&&((arg0.getX()>=x && arg0.getX()<=x+3)||(arg0.getX()>=endX && arg0.getX()<=endX+3))){
                    if((arg0.getX()>=center1 && arg0.getX()<=center1+3)&&((arg0.getY()>=y && arg0.getY()<=y+3)||(arg0.getY()>=endY&& arg0.getY()<=endY+3))){
                            ratio=imageHeight/imageWidth;
                            inY=arg0.getY();
                            clicked=true;
                            }
                    //repaint();
                    System.out.println("3");
                    }else if((arg0.getX()<x || arg0.getY()<y)||(arg0.getX()<x || arg0.getY()>endY)||(arg0.getX()>endX || arg0.getY()<y)||(arg0.getX()>endX || arg0.getY()>endY)){
                        System.out.println(" 1 I am working");
                        setR=false;
                        repaint();
                        System.out.println("4");
                    }
                //repaint();
                /*else if((arg0.getX()<x || arg0.getX()>endX)|| (arg0.getY()<y || arg0.getY()>endY)){
                        System.out.println(" 1 I am working");
                        setR=false;
                        repaint();
                    }*/



            }

            @Override
            public void mouseReleased(MouseEvent arg0) {
                // TODO Auto-generated method stub
                isSet=false;
            //  clicked=false;
            //  setR=false;
            //  repaint();

            }

        }


    }
1
  • >300 LOC to cause a one line failure? You need to develop some better debugging skills at least to the point where you can identify which LOC caused the problem. And for better help sooner, post an MCVE (Minimal Complete and Verifiable Example). Commented Apr 14, 2014 at 8:24

1 Answer 1

2

The problem is this line:

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

When setting EXIT_ON_CLOSE we are effectively trying to get the JVM to shut down itself as soon as the frame is closed. An applet security manager (even when the applet is trusted) will prevent that.

It should be:

frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

That will fix the immediate problem, but a better solution is to scrap the applet and put all the necessary controls in a frame. After that is accomplished, launch the frame using Java Web Start.

Sign up to request clarification or add additional context in comments.

4 Comments

Thank you for your answer but it still doesn't work, same exception, I tried to sign my jar files but it doesn't help ether
Are you positive the changed code is being loaded by the browser? BTW - ensure the Java Console is configured to show for applets & JWS apps. Clear the class cache between tests (see console for details). What about "..launch the frame using Java Web Start"? Are you intending to ignore that advice?
OK I got my error it was because I had JFrames, when I deleted it it worked thanks :)
"error it was because I had JFrames" No it wasn't. My answer explained why the code had the error. Try reading it again.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.