从另一个项目

时间:2017-05-29 08:49:50

标签: java eclipse tomcat

我是Java开发中的新手,我会尽量简短地提问我的问题。希望它有效: - )。

目标

从给定项目扩展一些Java类,而不编辑原始源文件。

问题

它不起作用;-)

简短说明

我有两个Java项目。 项目A 是一个更大的 Web项目项目B Web Fragment项目。我想从项目A 扩展一些类,但我不想编辑原始来源。因此,我们的想法是扩展项目B 中的类。

当前状态

创建项目B

我使用Eclipse Wizard创建了Project B

File > New > Project > Web Fragment Project

并将项目B 添加到动态网络项目项目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属性

  • 项目B 位于项目A
  • Web部署程序集
  • 我在 Java Build Path Projects标签中添加了 Project B
  • 订单和导出标签下,我将项目B 移到项目A

问题(S)

为什么不会从项目B 中的 MyClass.java 覆盖项目A 中的原始类。我有什么监督吗?

提前感谢您和最诚挚的问候, 丹尼尔

1 个答案:

答案 0 :(得分:1)

您必须告诉JVM使用已修补的类。为此,您需要匹配修补类的包和类名。魔术发生在classpath。 JVM按顺序加载类搜索。这意味着您将补丁设置为首次加载,例如

set CLASSPATH=..\yourPatch;..\theJar.jar

Eclipse IDE将此作为内置函数。你可以找到它

Project -> Properties -> Java Build Path -> Add Class Folder

将补丁类添加为第一个条目。