我是Java开发中的新成员,我将尝试简单而简短地提出我的问题。希望它能起作用:)。
目标
在不编辑原始源文件的情况下,从给定项目扩展一些Java类。
问题
它不管用-)
简短描述
我有两个Java项目。项目A是一个更大的网络项目。项目B是一个Web片段项目。我想从项目A中扩展一些类,但是我不想编辑原始的源代码。因此,我们的想法是扩展项目B中的类。
当前状态
创建项目B
我用Eclipse向导创建了项目B
File > New > Project > Web Fragment Project
并将项目B添加到动态Web项目项目A中
将类添加到项目B
现在,我使用与项目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不会被覆盖。为什么?
补充资料
项目A的性质
问题(S)
为什么项目A中的原始类不被项目B中的MyClass.java覆盖。我有什么能监督的吗?
事先谢谢你,并致以良好的问候,丹尼尔
发布于 2017-05-29 09:07:09
您必须告诉JVM使用修补类。为了做到这一点,您需要匹配修补类的包和类名。魔法发生在classpath
中。JVM按顺序加载类搜索。这意味着您将修补程序设置为第一次加载。
set CLASSPATH=..\yourPatch;..\theJar.jar
Eclipse将此作为内置函数。你可以找到它
Project -> Properties -> Java Build Path -> Add Class Folder
添加修补类作为第一个条目。
https://stackoverflow.com/questions/44238256
复制相似问题