有一段时间我是struggling to get an arquillian test case running .该测试涉及以 JSF 类为根的类,它遇到了 ClassFormatError: Absent Code
作为 javax.faces.model.DataModel
的实现找不到。
我的假设是我需要为我的测试提供 JSF 实现,但我发现的实现(例如与 JBoss 捆绑在一起的实现)没有 javax.faces
包,只有com.sun
,我找不到 DataModel
的踪迹类。
我在哪里误解了这里的工作方式?为什么不 impl
实际执行 api
?
最佳答案
API:
- 消费者可以编写代码的公共(public)类型
实现:
- 消费者不应依赖私有(private)类型
- 实现细节,包括标记(例如 HTML)和容器(例如 servlet)等内容
这种分离并不像它应该的那样干净,但这主要是意图。将这两个 jar 分开是开发人员选择组织代码的方式,但在大多数情况下,您需要同时使用这两个 jar 才能使用该库。
关于java - jsf-api 和 jsf-impl 有什么关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13048970/