1

我正在尝试play2,并编写一个简单的项目。

我在我的项目中发现了一个 3rd-party jar 中的一个 bug,所以我获取了源并对其进行了修改,将其放在app/项目的目录中。

当我使用play test时,所有测试都通过了。但是当我play run将它作为一个网络应用程序时,它会报告错误。

似乎play test找到并使用了正确的(修改后的)源,但play run使用了不正确的原始类。为了让play run工作正确,我必须修改原始 jar(删除那个错误的类),以确保只有我修改过的类。

但这很无聊,所以我想知道是否有办法在运行时设置类和 jar 的顺序play run,例如让它先使用我的源,然后是 3rd-party jar?

4

1 回答 1

1

如果我没有误解你有两次相同的代码:在一个jar文件和你的应用程序路径中。相同的代码是指同一包中的相同类名。

如果是这种情况,则 JVM 对它的支持不是很好。我相信您可以通过反射或使用类加载器找到一些解决方法,但老实说,使用补丁修改原始jar会简单得多。

事实上,将修复程序发送给 3rd 方jar的提供者并要求他们重建可能更简单,因此其他人可以从您的修复程序中受益。如果这不可能,只需编辑jar

于 2012-02-21T15:51:53.550 回答