2

在我们的框架中,我们在公共 API 中有一个与此方法的接口:

JaxbConfiguration newJaxbConfiguration(Options xjcOpts);

在实现中,我们做这样的事情:

import com.sun.tools.xjc.ModelLoader;
import com.sun.tools.xjc.Options;
import com.sun.tools.xjc.model.Model;
...

public JaxbConfiguration newJaxbConfiguration(Options xjcOpts) {
    Model model = ModelLoader.load(xjcOpts, ...);
    ...
}

然而,OSGi 和 Java 9 的拼图都不喜欢我们使用com.sun.tools.xjc.Options的 .

我们怎样才能摆脱它?

4

1 回答 1

2

JDeps网站列出了一些 JDK 内部 API 以及替换它们的推荐方法。但是,没有提到 ModelLoader.load() 的使用。我的猜测是,这个用例还没有引起 JDeps 团队的注意。

我的建议是重构这种方法,以便

  1. 您传入用于构造 Options 参数的数据,而不是传入 Options 参数
  2. 使用该数据来构造您的 JaxbConfiguration 对象,而不是从内部模型转换。

你没有提到 JaxbConfiguration 是什么或它来自什么库,所以我很难准确地说出如何构建它。无论如何,这个答案是关于如何删除内部 API 的使用。如何构造 JaxbConfiguration 可能是另一个问题。

于 2016-07-15T13:17:44.777 回答