为什么会提示 没有为类型 System.Logger 定义方法 getLogger(String)???

代码逻辑和拼写都没有问题,因为是照着书上写的。

但是所有的Logger.后面跟的方法全部报错了

整体代码有点长 有100多行,希望有大佬指点一下。


import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.lang.System.Logger;
import java.util.logging.*;
import javax.swing.*;



import javax.swing.*;


public class LoggingImageViewer {
    public static void main(String []args)
    {
        if(System.getProperty("java.util.logging.class") == null
                && System.getProperty("java.util.logging.config.file") == null)
        {
            try
            {
                Logger.getLogger("con.horstmann.corejava").setLevel(Level.ALL);
                final int LOG_ROTATION_COUNT = 10;
                Handler handler = new FileHandler("%h/LoggingImageViewer.log",0,LOG_ROTATION_COUNT);
                Logger.getLogger("com.horstmann.corejava").addHandler(handler);
            }
            catch(IOException e)
            {
            //这里Logger.getLogger就报错了 后面凡是Logger都报错了
                Logger.getLogger("com.horstmann.corejava").log(Level.SEVERE,
                        "Can't create log file handler",e);
            }
        }

        EventQueue.invokeLater(() ->
        {
            Handler windowHandler = new WindowHandler();
            windowHandler.setLevel(Level.ALL);
            Logger.getLogger("com.horstmann.corejava").addHandler(windowHandler);

            JFrame frame = new ImageViewerFrame();
            frame.setTitle("LoggingImageViewer");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            Logger.getLogger("com.horstmann.corejava").fine("Showing frame");
            frame.setVisible(true);
        });



    }

}
class ImageViewerFrame extends JFrame
    {
        private static final int DEFAULT_WIDTH = 300;
        private static final int DEFAULT_HEIGHT = 400;

        private JLabel label;
        private static Logger logger = Logger.getLogger("com.horetmann.corejava");
        public ImageViewerFrame()
        {
             logger.entering("ImageViewerFrame","<init>");
            setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);

            JMenuBar menuBar = new JMenuBar();
            setJMenuBar(menuBar);

            JMenu menu = new JMenu("File");
            menuBar.add(menu);

            JMenuItem openItem = new JMenuItem("open");
            menu.add(openItem);
            openItem.addActionListener(new FileOpenListener());

            JMenuItem exitItem = new JMenuItem("Exit");
            menu.add(exitItem);
            exitItem.addActionListener(new ActionListener()
                {
                    public void actionPerformed(ActionEvent event)
                    {
                        logger.fine("Exiting.");
                        System.exit(0);

                    }
                });

            label =new JLabel();
            add(label);
            logger.exiting("ImageViewerFrame","<init>");

        }
        private class FileOpenListener implements ActionListener
        {
            public void actionPerformed(ActionEvent event)
            {
                logger.entering("ImageViewwerFrame.FileOpenListener","actionPerformed",event);

                JFileChooser chooser = new JFileChooser();
                chooser.setCurrentDirectory(new File("."));

                chooser.setFileFilter(new javax.swing.filechooser.FileFilter()
                    {
                        public boolean accept(File f)
                        {
                            return f.getName().toLowerCase().endsWith(".gif")||f.isDirectory();
                        }

                        public String getDescription()
                        {
                            return "GIF Images";
                        }
                    });

                int r = chooser.showOpenDialog(ImageViewerFrame.this);

                if(r == JFileChooser.APPROVE_OPTION)
                {
                    String name = chooser.getSelectedFile().getPath();
                    logger.log(Level.FINE, "Reading file {0}",name);
                    label.setIcon("File open dialog canceled.");
                }
                else logger.fine("File open dialog canceled.");
                logger.exiting("ImageViewerFrame.FileOpenListener","acrionPerformed");
            }
        }
    }

class WindowHandler extends StreamHandler
{
    private JFrame frame;
    public WindowHandler()
    {
        frame = new JFrame();
        final JTextArea output = new JTextArea();
        output.setEditable(false);
        frame.setSize(200,200);
        frame.add(new JScrollPane(output));
        frame.setFocusableWindowState(false);
        frame.setVisible(true);
        setOutputStream(new OutputStream()
            {
                public void write(int b)
                {}

                public void write(byte[] b,int off,int len)
                {
                    output.append(new String(b,off,len));
                }
            });
    }

    public void publish(LogRecord record)
    {
        if(!frame.isVisible()) return;
        super.publish(record);
        flush();
    }
}








报的啥错贴出来看一下,你用的是jdk多少版本,10以下没有这个类,要是没设置jre那就是默认的jdk。应该就是版本低了