gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 04:43:40 26 4
gpt4 key购买 nike

当我选择 Clean and Build Project 时,我的 NetBeans IDE 响应“package com.apple.eawt doesn't exist”,但当我选择 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 does not exist”。

因此,我也收到 Application 和 QuitStrategy 的“找不到符号”错误。

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

我使用的是 JDK 1.8.0_91 和 NetBeans IDE 8.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");

另见 here .

关于java - 为什么 NetBeans 在执行清理和构建时找不到包 com.apple.eawt?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38174214/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com