2014-04-13 55 views
0

我是新來的小程序,我有一個問題訪問被拒絕java.lang.runtimepermission退出vm.0它顯示我在Safari上的這個錯誤,Firefox並沒有顯示任何東西,我不知道爲什麼是這樣,它在我的Eclipse上運行完美,但它不能在Web瀏覽器上工作任何幫助?謝謝。訪問被拒絕java.lang.runtimepermission退出vm.0

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(); 

      } 

     } 


    } 
+0

> 300 LOC導致一個線路故障?您至少需要開發一些更好的調試技巧,以確定哪些LOC導致了問題。爲了更快提供更好的幫助,請發佈[MCVE](http://stackoverflow.com/help/mcve)(** Minimal ** Complete and Verifiable Example)。 –

回答

2

的問題是這一行:

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

當設置EXIT_ON_CLOSE我們有效地試圖讓JVM的框架被關閉後立即關閉本身。小應用程序安全管理器(即使小應用程序是可信的)將阻止這種情況發生。

它應該是:

frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 

這將解決眼前的問題,而是一個更好的解決辦法是報廢的小程序,並把所有的必要的控制在一個框架。完成後,使用Java Web Start啓動幀。

+0

謝謝你的回答,但它仍然不起作用,同樣的例外,我試圖簽署我的jar文件,但它並沒有幫助乙醚 – user3428496

+0

你是積極的改變的代碼是由瀏覽器加載?順便說一句 - 確保[Java控制檯](http://www.java.com/en/download/help/javaconsole.xml)配置爲顯示applet和JWS應用程序。清除測試之間的類緩存(有關詳細信息,請參閱控制檯)。關於*「使用Java Web Start啓動框架」*?你打算忽略這個建議嗎? –

+0

好吧,我得到了我的錯誤,這是因爲我有JFrames,當我刪除它的工作感謝:) – user3428496

相關問題