繁体   English   中英

在触摸Main .java文件之前,对依赖Java类的更改才会生效。

[英]Changes to dependancy Java classes do not take effect until Main .java file is touched

我对此进行了大量搜索。.我有一个可以用以下代码概括的问题:

item.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {

        JDialog ui = new RandomDialog();
    }
});

item只是一个菜单项,而RandomDialog是扩展JDialog的类。

每次我对RandomDialog类进行更改时,都必须将ui声明从JDialog “更新”到RandomDialog ,然后反之亦然。

问题是什么?

[编辑]

我有一个JFrameJMenuBarJMenuItem 这些项目之一的听众像上面的那个。 我想在按下该项目时打开一个JDialog 每次我对表示JDialog (扩展JDialog的独立类)的类的代码进行更改时,都会发生变化,除非更改JDialog的声明,否则不会显示更改。 因此,假设我有这样的声明:

JDialog ui = new RandomDialog();

如果我进行更改,则必须这样输入:

RandomDialog ui = new RandomDialog();

接下来,我必须再次提出:

JDialog ui = new RandomDialog();

依此类推...

通过将JDialog更改为RandomDialog ,然后再更改为JDialog您并没有更改代码,而是在更改文件的时间戳。 这将导致您的构建系统从Java文件重新构建.class文件,构建.jar文件,然后可能将其部署到服务器,具体取决于您的设置方式。

问题的原因是您的构建系统没有意识到此文件(带有JMenuItem )依赖于另一个文件(带有RandomDialog ),因此对RandomDialog更改不会导致重新生成。

为了解决这个问题,您将需要查看您的项目结构。 您尚未描述代码的构建方式。 通常,如果您使用IDE,它将使您能够管理项目依赖项。

在NetBeans中,Clean&Build通常会进行必要的重新构建。

确保启用“保存时编译”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM