JAXB XJC选项:com.sun.tools.XJC.options的替代品,它对Java9和OSGi都是友好的

JAXB XJC选项:com.sun.tools.XJC.options的替代品,它对Java9和OSGi都是友好的,jaxb,osgi,xjc,java-9,Jaxb,Osgi,Xjc,Java 9,在我们的框架中,我们在公共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 newJax

在我们的框架中,我们在公共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和Java9的jigsaw都不喜欢我们使用
com.sun.tools.xjc.Options
,而不是在我们的实现中,尤其是在我们的公共API接口中

我们怎样才能摆脱它呢?

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

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

  • 传入用于构造Options参数的数据,而不是传入Options参数
  • 使用该数据构建JaxbConfiguration对象,而不是从内部模型转换

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

    您能否解释什么是JAXBC配置以及您希望通过该方法实现什么@马里奥·福斯科你知道我们该怎么做吗?