我是Java开发中的新手,我会尽量简短地提问我的问题。希望它有效: - )。
从给定项目扩展一些Java类,而不编辑原始源文件。
它不起作用;-)
我有两个Java项目。 项目A 是一个更大的 Web项目。 项目B 是 Web Fragment项目。我想从项目A 扩展一些类,但我不想编辑原始来源。因此,我们的想法是扩展项目B 中的类。
我使用Eclipse Wizard创建了Project B
File > New > Project > Web Fragment Project
并将项目B 添加到动态网络项目,项目A
现在我使用与项目A
中相同的文件夹结构将原始Java类复制到项目B 中Project A > WebContent > WEB-INF > src > a > b > c > MyClass.java
Project B > WebContent > WEB-INF > src > a > b > c > MyClass.java
两个类都在同一个包中
package a.b.c;
到目前为止一切顺利。我为控制台编写了一些测试输出,以检查是否可以正确覆盖该类。
我部署项目A 并启动Tomcat服务器。但是我的测试输出没有记录到控制台。所以我怀疑, MyClass.java 将不会被覆盖。为什么呢?
为什么不会从项目B 中的 MyClass.java 覆盖项目A 中的原始类。我有什么监督吗?
提前感谢您和最诚挚的问候, 丹尼尔
答案 0 :(得分:1)
您必须告诉JVM使用已修补的类。为此,您需要匹配修补类的包和类名。魔术发生在classpath
。 JVM按顺序加载类搜索。这意味着您将补丁设置为首次加载,例如
set CLASSPATH=..\yourPatch;..\theJar.jar
Eclipse IDE将此作为内置函数。你可以找到它
Project -> Properties -> Java Build Path -> Add Class Folder
将补丁类添加为第一个条目。