我是NetBeans和Java的新手。我正在使用NetBeans为学校构建和运行Java Swing项目。
我在NetBeans中编写了代码并保存了它。使用javac
从命令行进行编译是成功的,程序按预期运行。如果我更新代码并从CLI重复该过程,则新更改将按预期反映出来。
如果我在NetBeans和Clean and Build
中进行代码更改(例如按Shift + F11),则从NetBeans运行(例如通过F6),更改不反映。没有错误,我只在输出中收到BUILD SUCCESSFUL
通知。但是应用程序的旧版本将运行而不会反映出任何变化。
我通过从CLI构建来解决这个问题,但是现在变得非常快,能够在IDE中从w /运行会很好。
以下是一些上下文代码。它按需运行。作为我的问题的一个例子,请注意文件2中的按钮初始化。如果我更改了ctor字符串arg,当我在NetBeans中清理,构建和运行时,将不会反映更改(或者如果我只是构建并运行没有干净) )。但是,如果从命令行运行,它将被反映出来。
文件1:
/* pkg & import statements */
public class Project1Part1 {
public static void main(String[] args) {
System.out.println("Attempting to build frame...");
buildFrame();
}
public static void buildFrame()
{
JFrame frame = new JFrame("Project 1, Part 1");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GuiPanel guiPanel = new GuiPanel();
frame.setContentPane(guiPanel);
frame.setSize(640, 360);
frame.setVisible(true);
System.out.println("Frame built.");
}
}
文件2:
/* pkg and import statements */
public class GuiPanel extends JPanel {
public GuiPanel()
{
LayoutManager layoutMgr = new FlowLayout();
setLayout(layoutMgr);
Dimension buttonSize = new Dimension(150, 20);
JButton cardPickerButton = new JButton("Card Picker");
cardPickerButton.setPreferredSize(buttonSize);
add(cardPickerButton);
}
}
更新 根据我看到的其他帖子,我将我的Ant版本从1.9.4升级到1.9.6作为黑暗中的镜头,没有任何区别。
更新2:
我只使用Build
和Clean and Build
选项,这些选项不用于编译在IDE中运行的应用程序。保存文件时,NetBeans默认自动编译项目,如下所示:
the NetBeans documentation。同样,如果用户选择Run
,则在NetBeans运行应用程序之前,将自动保存和编译所有未保存的文件。我的问题是我习惯于清理和构建不同的含义,所以每当我想在IDE中运行应用程序时,我就运行了Clean和Build。在NetBeans中选择Clean and Build
甚至Build
选项之后,我还没有找到一种强制重新编译以便在IDE中执行的方法,除了进行一些微小的更改以允许重新保存某些文件之外该项目。
更新3:
按要求添加项目的build.xml
。为了便于阅读,我删除了注释部分。
<?xml version="1.0" encoding="UTF-8"?>
<project name="Project1Part1" default="default" basedir=".">
<description>Builds, tests, and runs the project Project1Part1.</description>
<import file="nbproject/build-impl.xml"/>
</project>
答案 0 :(得分:2)
你不应该做任何特别的事情来获得最新的运行。无论是否使用Build或Clean and Build运行都将运行最新版本。我以前遇到过这种症状,并且总是发现有源和/或项目文件的多个副本。 Netbeans正在使用一个运行,我正在错误的目录中编辑一个副本,期望它有效。
试试这个:
答案 1 :(得分:0)
Shift + f11
工作正常。
非常欢迎你/ n
答案 2 :(得分:0)
在基于Maven的项目中,许多缓存输出都在您的“目标”文件夹中。
如果清除不起作用,只需删除目标文件夹并运行该项目。