簡體   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