Java Netbeans 8.0.2先清理后生成,然后运行旧代码的结果
我不熟悉NetBeans和Java。我正在使用NetBeans为学校构建和运行一个JavaSwing项目 我用NetBeans编写代码并保存了它。使用Java Netbeans 8.0.2先清理后生成,然后运行旧代码的结果,java,netbeans,Java,Netbeans,我不熟悉NetBeans和Java。我正在使用NetBeans为学校构建和运行一个JavaSwing项目 我用NetBeans编写代码并保存了它。使用javac从命令行编译成功,程序按预期运行。如果我更新代码并从CLI重复该过程,新的更改将按预期反映出来 如果我在NetBeans中进行代码更改,并且清理并生成(例如,按Shift+F11),然后从NetBeans中运行(例如,按F6),则更改不会反映出来。没有错误,我只是在输出中得到了一个构建成功的通知。但旧版本的应用程序将运行,不会反映任何更改
javac
从命令行编译成功,程序按预期运行。如果我更新代码并从CLI重复该过程,新的更改将按预期反映出来
如果我在NetBeans中进行代码更改,并且清理并生成
(例如,按Shift+F11),然后从NetBeans中运行(例如,按F6),则更改不会反映出来。没有错误,我只是在输出中得到了一个构建成功的
通知。但旧版本的应用程序将运行,不会反映任何更改
我通过从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和Build
选项,它们不用于编译要在IDE中运行的应用程序。保存文件时,默认情况下NetBeans会自动编译项目,如下所示:
. 同样,如果用户选择Run
,所有未保存的文件将在NetBeans运行应用程序之前自动保存和编译。我的问题是,我习惯于清理和构建,这意味着不同的东西,所以每次我想在IDE中运行应用程序时,我都会运行清理和构建。一旦NetBeans中选择了清理并生成
甚至生成
选项,我就没有找到一种方法来强制重新编译以便在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>
构建、测试和运行项目1第1部分。
您不必做任何特殊的事情来运行最新版本。使用或不使用生成或清理生成运行,生成将运行最新版本。我以前有过这种症状,结果总是发现源文件和/或项目文件有多个副本。Netbeans正在使用一个来运行,我在错误的目录中编辑了一个副本,希望它能起作用
试试这个:
您不必做任何特殊的事情来运行最新版本。使用或不使用生成或清理生成运行,生成将运行最新版本。我以前有过这种症状,结果总是发现源文件和/或项目文件有多个副本。Netbeans正在使用一个来运行,我在错误的目录中编辑了一个副本,希望它能起作用 试试这个:
非常欢迎您/n在基于Maven的项目中,许多缓存输出都在您的“目标”文件夹中
如果清除不起作用,只需删除目标文件夹并运行项目。在基于Maven的项目中,许多缓存的输出都在“目标”文件夹中
如果清除不起作用,只需删除target文件夹并运行项目。您是否可以发布编译/执行代码的
build.xml
部分(包括解析变量所需的所有部分,如果使用)。添加了整个文件,不包括注释,仅5行。我不确定这个文件里会发生什么。这是用来告诉NetBeans更新自己的应用程序版本以及它生成的外部构建吗?好的,我认为这是一个独立的基于Ant的项目。您是否使用Netbeans向导创建了此项目?如果更改GuiPanel.java
中的按钮文本并按F6
,则GuiPanle.java
是否保存并执行了ProjectPart1
?是的,我使用了向导。是的,按F6键确实会导致项目编译时显示更改。您的项目是否引用了另一个项目(在项目属性的“库”部分)?如果禁用“保存时编译”功能,它是否有效?我看到启用该功能时会发生奇怪的事情(尽管大多数情况下是基于Maven的项目)。你启用“跟踪”了吗