我正在使用Netbeans开发我的项目,我最近发现一个jar文件中的一个类覆盖了另一个同名文件,如何解决这个问题?
我有一个名为 DB_Tools_Panel 的项目,它具有以下结构:
src/ : DB_Tools_Panel.java
Utility/ : Tools_Lib.java
所以在 src 目录里面有一个文件:DB_Tools_Panel.java,在 src 目录里面有一个叫做 Utility 的目录,在 Utility 里面有一个叫做 Tools_Lib.java 的文件。
我把这个项目打包成一个jar文件:DB_Tools_Panel.jar
然后我创建了第二个项目 Fit,它具有以下结构:
src/ : Fit.java
Utility/ : Tools_Lib.java
lib/ : DB_Tools_Panel.jar
它使用 DB_Tools_Panel.jar,所以 DB_Tools_Panel.jar 在 Fit 的 lib 目录中,但是现在当我在 Fit/src/Utility 中更改 Tools_Lib.java 并运行它时,什么都不会发生,就好像它从未改变过一样,现在我知道为什么了, 因为JVM只运行DB_Tools_Panel.jar包中的Tools_Lib.java,所以在Fit/src/Utility中是看不到Tools_Lib.java的在 DB_Tools_Panel.jar 中将掩盖 Fit/src/Utility 中的 Tools_Lib.java。
两个地方的 Tools_Lib.java 是同一个文件,但是 Fit/src/Utility 中的那个可能更高级,有时我会测试 DB_Tools_Panel 并确保它工作正常并将其打包成一个 jar 文件并使用它在其他项目中,而Utility/Tools_Lib.java在以后的项目中使用,需要改进,但我不一定想总是回到DB_Tools_Panel.jar并更新其中的Tools_Lib.java。
所以我的问题是:
[1] 在这种情况下,Fit 项目中是否有可能有 2 个不同的 Tools_Lib.java 文件,一个在 Fit/src/Utility/ 中,另一个在 Fit/lib/DB_Tools_Panel.jar 中并且不会导致冲突,我的意思是也就是说:当 Fit 调用 Tools_Lib.java 时,将使用它的 src/Utility/ 中的一个,当 Fit 中的某些方法调用 DB_Tools_Panel 时,DB_Tools_Panel 的 Tools_Lib.java 将在 DB_Tools_Panel 的方法中使用。
[2] 为什么 DB_Tools_Panel.jar 中的 Tools_Lib.java 会遮盖 Fit/src/Utility 中的 Tools_Lib.java?
[3] 如何让 2 个 Tools_Lib.java 不同,并且仍然能够更改 Fit/src/Utility 中的一个并在 Fit 项目中使用它,就好像 DB_Tools_Panel.jar 中的那个不存在一样?