Access restriction error on my java code

I am trying to capture an image from my webcam, but I got an error in my method saveJPG.

Error:

Multiple markers at this line
    - Access restriction: The type JPEGCodec is not accessible due to restriction on required library C:\Program Files\Java\jre7\lib\rt.jar
    - Access restriction: The method createJPEGEncoder(OutputStream) from the type JPEGCodec is not accessible due to restriction on required library C:
     \Program Files\Java\jre7\lib\rt.jar
    - Access restriction: The type JPEGImageEncoder is not accessible due to restriction on required library C:\Program Files\Java\jre7\lib\rt.jar

This error occurs in my method saveJPGin the line where I have

JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bi);  
param.setQuality(0.5f,false);   
encoder.setJPEGEncodeParam(param);    

CODE:

JButton startC = new JButton("Capturar");
    startC.setPreferredSize(new Dimension(100,22));

    startC.addActionListener(new ActionListener()
            {

                @Override
                public void actionPerformed(ActionEvent e)
                {                   
                      // Grab a frame   
                      FrameGrabbingControl fgc = (FrameGrabbingControl) 
                      player.getControl("javax.media.control.FrameGrabbingControl");    
                      buf = fgc.grabFrame();       

                      // Convert it to an image 
                      btoi = new BufferToImage((VideoFormat)buf.getFormat());   
                      img = btoi.createImage(buf);       

                      // show the image 
                      //imgpanel.setImage(img);       

                      // save image 
                      saveJPG(img,"c:\\test.jpg");
                }
            });     



    public static void saveJPG(Image img, String s) 
          { 
            BufferedImage bi = new BufferedImage(img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_RGB);  
            Graphics2D g2 = bi.createGraphics();    
            g2.drawImage(img, null, null);  
            FileOutputStream out = null;

            try 
            {   
              out = new FileOutputStream(s);    
            }   
            catch (java.io.FileNotFoundException io)    
            {   
              System.out.println("File Not Found"); 
            }   

            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);

            JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bi);  
            param.setQuality(0.5f,false);   
            encoder.setJPEGEncodeParam(param);     

            try 
            {   
              encoder.encode(bi);   
              out.close();  
            }   
            catch (java.io.IOException io)  
            {   
              System.out.println("IOException");    
            }
          }

IMPORT:

import static com.googlecode.javacv.jna.highgui.cvCreateCameraCapture;
import static com.googlecode.javacv.jna.highgui.cvGrabFrame;
import static com.googlecode.javacv.jna.highgui.cvReleaseCapture;
import com.googlecode.javacv.CanvasFrame;
import com.googlecode.javacv.FrameGrabber;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import com.colorfulwolf.webcamapplet.gui.LabelPanel;
import com.colorfulwolf.webcamapplet.gui.LoadingScreen;
import com.googlecode.javacv.jna.highgui.CvCapture;
import java.awt.BorderLayout;
import javax.media.*;
import javax.media.protocol.*;
import javax.media.util.BufferToImage;
import javax.swing.*;
import java.awt.*;
import java.util.*;
import javax.media.control.*;
import javax.media.format.*;
import com.sun.image.codec.jpeg.*;
+5
source share
2 answers

The Eclipse Java compiler is trying to prevent you from using non-public APIs. In classic Java, the concept of visibility is fairly primitive, and so library developers often have to introduce public space classes that are created exclusively for internal use. This does not apply to more advanced frameworks such as OSGi.

, , .

+13

, :

  • .
  • Java node.
  • "".
  • JRE.
  • JRE System Library.
+10

All Articles