2012-09-24 15 views
5

पर एक्सेस प्रतिबंध त्रुटि मैं अपने वेबकैम से छवि को कैप्चर करने की कोशिश कर रहा हूं, लेकिन मुझे मेरी saveJPG विधि में त्रुटि मिली।मेरे जावा कोड

त्रुटि:

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 

यह त्रुटि लाइन मैं कहाँ है मेरे saveJPG विधि में होता है

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

कोड:

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 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.*; 
+0

क्या आप एक्लिप्स का उपयोग कर रहे हैं? कुछ समय पहले मेरे पास ऐसा कुछ भी था, लेकिन वह एक ग्रहण बग था (इंडिगो में, वर्तमान संस्करण जूनो को इसके लिए एक फिक्स मिला)। – 11684

+0

@ 11684 मैं ग्रहण जूनो –

+0

का उपयोग कर रहा हूं जहां 'com.sun.image.codec.jpeg' पैकेज वाला जार कहां है? – 11684

उत्तर

13

The Eclipse जावा गैर सरकारी एपीआई का उपयोग करने से रोकने के लिए प्रयास करता है। क्लासिक जावा में, दृश्यता अवधारणा काफी प्राचीन है और इसलिए पुस्तकालय डिजाइनरों को अक्सर सार्वजनिक उपयोग कक्षाओं में आंतरिक उपयोग के लिए बनाया गया है। ओएसजीआई जैसे अधिक विकसित ढांचे के साथ यह मामला नहीं है।

यदि आप अभी भी इस कक्षा तक पहुंचना चाहते हैं, तो आप this blog post में वर्णित अनुसार कर सकते हैं।

10

मैं कर रहा था सुझाव का पालन करके इस त्रुटि से छुटकारा पाने के:

  1. ओपन परियोजना गुण।
  2. जावा बिल्ड पथ नोड का चयन करें।
  3. पुस्तकालय टैब का चयन करें।
  4. जेआरई सिस्टम लाइब्रेरी निकालें।
  5. लाइब्रेरी जेआरई सिस्टम लाइब्रेरी जोड़ें।
+1

धन्यवाद, यह काम करता है! – Cheung