Java 为什么NetBeans在进行清理和构建时找不到包com.apple.eawt?

Java 为什么NetBeans在进行清理和构建时找不到包com.apple.eawt?,java,macos,netbeans,Java,Macos,Netbeans,当我选择Clean and Build Project时,我的NetBeans IDE响应包com.apple.eawt不存在,但当我选择Run Project时工作正常 我有一个针对OS X的Java 8应用程序。要在用户从菜单中选择退出时触发窗口侦听器,我有以下代码: import com.apple.eawt.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class AppleUI

当我选择Clean and Build Project时,我的NetBeans IDE响应包com.apple.eawt不存在,但当我选择Run Project时工作正常

我有一个针对OS X的Java 8应用程序。要在用户从菜单中选择退出时触发窗口侦听器,我有以下代码:

import com.apple.eawt.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class AppleUI extends JFrame {

public AppleUI() {
    JPanel panel = new JPanel();
    panel.setPreferredSize(new Dimension(400, 200));
    this.add(panel);

    Application.getApplication().setQuitStrategy(QuitStrategy.CLOSE_ALL_WINDOWS);
    addWindowListener(new WindowAdapter() {
        public void windowClosing(WindowEvent e) {
            System.out.println("Quitting");
            System.exit(0);
        }
    });

    this.setVisible(true);
    this.pack();
}

public static void main(String[] args) {
    new AppleUI();
}
}
当我选择在NetBeans中运行项目时,应用程序运行良好。但是,当我选择Clean and Build Project或Test Project时,会出现以下错误:“package com.apple.eawt不存在”

因此,我得到“找不到符号”错误的应用程序和退出策略以及

我觉得这很奇怪。包com.apple.eawt与所有其他Java运行时类一起位于rt.jar中。为什么NetBeans在进行清理和构建时不认识到这一点?我做错了什么


我正在使用JDK1.8.091和NetBeansIDE8.1。谢谢你的帮助

回答我自己的问题

经过大量研究,我发现编译器不是在rt.jar中查找包,而是在一个名为ct.sym的符号文件中查找包,该文件只包含标准Java包

可以使用编译器选项-XDignore.symbol.file忽略符号文件,但这似乎不是推荐的解决方案

相反,我重写代码的方式不是使用com.apple.eawt包,而是使用系统属性

//Application.getApplication().setQuitStrategy(QuitStrategy.CLOSE_ALL_WINDOWS);
System.setProperty("apple.eawt.quitStrategy", "CLOSE_ALL_WINDOWS");

另请参见。

回答我自己的问题

经过大量研究,我发现编译器不是在rt.jar中查找包,而是在一个名为ct.sym的符号文件中查找包,该文件只包含标准Java包

可以使用编译器选项-XDignore.symbol.file忽略符号文件,但这似乎不是推荐的解决方案

相反,我重写代码的方式不是使用com.apple.eawt包,而是使用系统属性

//Application.getApplication().setQuitStrategy(QuitStrategy.CLOSE_ALL_WINDOWS);
System.setProperty("apple.eawt.quitStrategy", "CLOSE_ALL_WINDOWS");

另请参见。

如果是第三方库,则应在中将该库添加到项目中netbeans@Shashanth该包包含在苹果发行版的标准rt.jar文件中,因此我认为它不必要。但是我也尝试了,但没有成功。如果是第三方库,那么您应该在中将该库添加到您的项目中netbeans@Shashanth该包包含在苹果发行版的标准rt.jar文件中,因此我认为它不必要。然而,我也尝试过,但没有成功。