我对如何使用 mavenprovided
范围和 Java 类加载器有误解。
假设我有一个类 ,MyClass
并且这个类有一个serialize()
方法,该方法采用一个枚举来描述序列化时要使用的 JSON 库。
其中一个 JSON 库是内部的,包含在我为 MyClass 分发的 JAR 中。简单的。
另一个 JSON 库是我想强制用户提供的第 3 方库。因此,我把它放在<scope>provided</scope>
我的 pom.xml 中。
在测试期间一切都对我有用,但是当我尝试从外部使用我自己的库而我的类路径中没有第 3 方 JSON 库时,我得到了ClassNotFoundException
s,即使我根本没有调用serialize()
。
我假设类只会“按需”加载,并且由于我没有调用serialize()
,所以我不应该有任何运行时问题。我错了吗?有没有办法实现我在这里得到的?