- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个程序:
import foo.bar.baz.ClassSpecificallyIncluded;
import javax.xml.bind.JAXBContext;
public class A {
public static void main(String[] args) throws Exception {
System.out.println(JAXBContext.newInstance(ClassSpecificallyIncluded.class).toString());
System.out.println(JAXBContext.newInstance("foo.bar.baz").toString());
}
}
为第一个和第二个 JAXBContext 产生不同的输出:
jar:file:/C:/dev/trunk/rt/tomcat/shared/lib/webservices-rt-2.0.1.jar!/com/sun/xml/bind/v2/runtime/JAXBContextImpl.class Build-Id: 1.0
Classes known to this context:
[B
boolean
byte
char
foo.bar.baz.Class1
foo.bar.baz.Class1$NestedClass
foo.bar.baz.Class2
foo.bar.baz.ClassSpecificallyIncluded
foo.bar.baz.AnotherClass
com.sun.xml.bind.api.CompositeStructure
double
float
int
java.awt.Image
java.io.File
java.lang.Boolean
java.lang.Byte
java.lang.Character
java.lang.Class
java.lang.Double
java.lang.Float
java.lang.Integer
java.lang.Long
java.lang.Object
java.lang.Short
java.lang.String
java.lang.Void
java.math.BigDecimal
java.math.BigInteger
java.net.URI
java.net.URL
java.util.Calendar
java.util.Date
java.util.GregorianCalendar
java.util.UUID
javax.activation.DataHandler
javax.xml.bind.JAXBElement
javax.xml.datatype.Duration
javax.xml.datatype.XMLGregorianCalendar
javax.xml.namespace.QName
javax.xml.transform.Source
long
short
voidjar:file:/C:/dev/trunk/rt/tomcat/shared/lib/webservices-rt-2.0.1.jar!/com/sun/xml/bind/v2/runtime/JAXBContextImpl.class Build-Id: 1.0
Classes known to this context:
[B
boolean
byte
char
foo.bar.baz.Class1
foo.bar.baz.Class1$NestedClass
foo.bar.baz.Class2
<<< CLASS IS MISSING HERE>>>
foo.bar.baz.AnotherClass
com.sun.xml.bind.api.CompositeStructure
double
float
int
java.awt.Image
java.io.File
java.lang.Boolean
java.lang.Byte
java.lang.Character
java.lang.Class
java.lang.Double
java.lang.Float
java.lang.Integer
java.lang.Long
java.lang.Object
java.lang.Short
java.lang.String
java.lang.Void
java.math.BigDecimal
java.math.BigInteger
java.net.URI
java.net.URL
java.util.Calendar
java.util.Date
java.util.GregorianCalendar
java.util.UUID
javax.activation.DataHandler
javax.xml.bind.JAXBElement
javax.xml.datatype.Duration
javax.xml.datatype.XMLGregorianCalendar
javax.xml.namespace.QName
javax.xml.transform.Source
long
short
void
然而,ClassSpecificallyIncluded 在 foo.bar.baz 包中:
//
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 in JDK 6
// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Any modifications to this file will be lost upon recompilation of the source schema.
// Generated on: 2012.05.14 at 10:47:17 PM IST
//
package foo.bar.baz;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"applicationArea",
"dataArea"
})
@XmlRootElement(name = "ClassSpecificallyIncluded")
public class ClassSpecificallyIncluded {...
两个 JAXBContext 的类路径和类加载器是相同的。
那么为什么第二个 JAXBContext 不知道 ClassSpecificallyIncluded?
最佳答案
这里有效地回答了您的问题:
Can you find all classes in a package using reflection?
答案:否 根据设计,java 不知道也无法找到包中的每个类。 Java建立在“及时”的概念之上。出于此目的,这意味着 Java 直到被特定要求时才知道它得到了什么。
因此从这个角度来看,JAXB 无法找到包中有哪些类。
如果每次需要上下文时都必须准确地告诉 JAXB,那将很不方便。因此,作为一种方便的方法,JAXB 为您提供了提供包名称的选项。
为了绕过 java 的限制,它尝试从该包加载一个 ObjectFactory
和一个 jaxb.index
文件。它可以这样做,因为它们是特定的名称。如果找到一个,则它将它们用作包的 list 。如果两者都没有找到,它别无选择,只能中止,因为它不可能知道包中有什么。
关于jaxb - 为什么 JAXBContext 需要特别告知包中已有的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20273355/
我正在将我们的团队从 JAXB 1.x 迁移到 JAXB 2.1,它是 JAVA1.6 (rt.jar) 的一部分。一切都进行得很顺利,直到它在运行时开始提示。 这是导致问题的代码行。 String
在我的 java 项目中,我有一个用一些类生成的 jar。我能够实例化我的 jar 中的类的实例: Alert a = new Alert(); 但是我尝试这样做: JAXBContext conte
我想问一个关于 @UsesJAXBContext的问题 jax-ws 中的注解。我试图让它在客户端工作,但我可能遗漏了一些东西。这是我的案例: 我有网络服务操作: @WebMethod(operati
我在使用 JAXB 时遇到了一个奇怪的问题。我已经使用 xjc 从我的 XSD 生成我的 java 类,一切看起来都不错。如果我使用 schemagen,它会生成一个与我的原始 xsd 相匹配的正确模
有没有什么方法可以加快 javax.xml.bind.JAXBContexts 的初始化以及大量(>1000)类的初始化?在我们的 XML 繁重的应用程序中,启动时间大约为 10 分钟,主要包括 JA
这个程序: import foo.bar.baz.ClassSpecificallyIncluded; import javax.xml.bind.JAXBContext; public clas
我使用MarshallingMessageConverter作为MessageConverter bean的实现。我使用 Jaxb2Marshaller 作为 org.springframework.
这个问题已经有答案了: JAXBContext and @XmlRootElement cause error (1 个回答) 已关闭 4 年前。 我有一个 POJO(Kotlin 中),我想将其更改
我们在 Mule 适配器中面临一个与 JAXB 上下文相关的问题,需要对此提出一些意见我们正在使用 xpath 来评估适配器中选择 block 中的一些表达式,如下所示, ....
我对 JAXB 的这两个方面感到困惑。 据我了解,当将冒号分隔的包名称作为上下文路径传递到 newInstance 时JAXBContext 的方法,JAXB 会将这些包下的所有类添加到其作用域中,以
我正在尝试像这样初始化 JAXBContext: JAXBContext jaxbContext = JAXBContext.newInstance("ebay.apis.eblbasecompone
我有关于将 XML 转换为 Java 对象的问题,在这里我使用 JAXB。 就我而言: XML 数据: Aris Tonar XML 数据
我知道 JAXBContext 应该只创建一次,因为它非常昂贵,但我很好奇是否最好为所有必需的类创建一个上下文, JAXBContext newInstance(Class... classesToB
通过使用 XJC,我创建了 2 个不同的 JAXB 元数据包,每个包中都有一个 ObjectFactory 类(我不知道这种方法是否可行,我有 2 个不同的 XSD 需要处理) 建议每个操作只创建一个
在最近的系统测试部署之后,我们的一个 servlet 受到的打击比平时严重得多,我们注意到内存开始攀升,而 weblogic 最终会死掉。我的实习生,我很自豪,发现了内存泄漏的根源。 无论何时收到请求
我正在 JAXBContext 类中试验各种形式的 newInstance 方法(我使用的是 Oracle JDK 1.7 附带的默认 Sun JAXB 实现)。 我不清楚何时可以将具体类与 Obje
jaxb.properties需要在与域类 相同的包您正在创建 JAXBContext。 我正在使用 Moxy 的 xml 驱动配置,因为我不想使用注释或 XJC 生成的对象。我有一个现有的域类,它们
我需要为特定的 XmlAdapter 安装 DefaultValidationEventHandler。从我读过的内容来看,你只能这样做: JAXBContext context = JAXBCont
在创建用于解码的 JAXBContext 实例时出现空指针异常。下面的行位于一个函数内,每次我上传需要解码的 XML 时都会调用该函数。 JAXBContext jc = JAXBContext.ne
请阐明 JAXBContext 配置。鉴于: 客户库 com.mycompany.user01234 包含多个JAXB 注解的类 所有类都是位于同一个包中的简单 POJO 类由 @XmlType 注释
我是一名优秀的程序员,十分优秀!