2017-02-27 44 views
0

我使用IntelliJ的重構工具將包名從oldName更改爲newName。該軟件包包含一個Guice提供者綁定。在重構之後,主類拋出一個運行時異常:IntelliJ:重構包導致Guice類未找到

Message: java.lang.ClassNotFoundException: project.oldName.missingClassProvider 

在我的例子,我已經重構oldNamenewName。但例外情況表明它仍在oldName包中尋找missingClassProvider

似乎類路徑已經更新,因爲我可以導入missingClassProvider。但似乎有一個Guice數據容器沒有被更新。

有人可以解釋是什麼導致了這種行爲?我如何讓Guice識別軟件包名稱的變化?

回答

1

可能不是一個問題。 Guice不會在任何地方存儲名稱。它是一個運行時庫,通常在應用程序通過一個或多個模塊啓動時進行配置。

我的猜測是關於損壞的版本。嘗試清理和重建項目。如果您正在使用某種構建工具(Maven,Gradle)查找並執行清理目標。

如果您僅使用IDEA,請嘗試使用Build> Rebuild項目重建整個項目。

+0

終於有機會看看這個。所有對舊'project.oldName'的引用都位於.idea/workspace.xml文件中。我試過運行Gradle Clean任務。我也嘗試使用IDEA Build> Rebuild。兩者都不起作用。我會嘗試使緩存/重新啓動無效。 – andrew

+0

無效緩存/重新啓動不起作用。 – andrew

+0

workspace.xml中對'project.oldName'的大多數引用似乎與本地歷史有關。我還注意到文本「project.oldName」確實出現在另一個地方:.gradle/2.2/taskArtifacts/fileSnapshots.bin – andrew

相關問題