If you run across an error like this when trying to use JAXB:
java.lang.LinkageError: JAXB 2.0 API is being loaded from the bootstrap classloader, but this RI
(from
jar:file:/somedirectory/jaxb-impl.jar!/com/sun/xml/bind/v2/model/impl/ModelBuilder.class)
needs 2.1 API. Use the endorsed directory mechanism to place
jaxb-api.jar in the bootstrap classloader. (See
http://java.sun.com/j2se/1.5.0/docs/guide/standards/
)
It's
actually a very simple fix, but painful enough to warrant a post. Put
the jaxb-api.jar that you're trying to use into
JDK_HOME/jre/lib/endorsed. If the endorsed directory doesn't exist,
make it. This is apparently only a problem with JDK 1.6, not with JDK
1.5.
我用
JDK1.6
的方法
(
使用的是
jboss5.0
里的
jaxb-api)
解决不了
,
后来再装了
1.5
后问题解决
7.1.2.
Using JAXB 2.1 with JavaSE 6
JavaSE 6 comes with JAXB 2.0 API in
rt.jar
. Therefore, using JAXB 2.1 with JavaSE 6 requires one to override a portion of
rt.jar
with the new API. There are several ways to do this:
- Place the 2.1
jaxb-api.jar
into
$JRE_HOME/lib/endorsed
.
This essentially makes your JRE to "JRE 6 + JAXB 2.1". This won't
affect any other applications that use this JRE, and it's easy. On the
other hand, in various scenarios you may not be able to alter the JRE.
- Use the system property
java.endorsed.dirs
when you launch your application, and have it point to the directory that contains the 2.1
jaxb-api.jar
. This allows you use use JAXB 2.1 without modifying the JRE. Make sure not to include any other JAXB RI jar files (such as
jsr173-api.jar
or
jaxb-impl.jar
.)
- Implement a custom
ClassLoader
and block delegation to
javax.xml.bind
package, so that code running inside this class loader will load the
JAXB API from elsewhere. This is a very advanced approach.
No matter which approach you take, make sure not to include jar files other than
jaxb-api.jar
. Doing so, for example including
jaxb-xjc.jar
,
may result in classloading related errors such as "taskdef A class
needed by class com.sun.tools.xjc.XJCTask cannot be found:
org/apache/tools/ant/...."
See
the endorsed directory mechanism
for more details.
相关推荐
在给定的"jdk1.6解压版(免安装版)"中,用户无需经历传统意义上的安装过程,只需将压缩包解压到指定位置,然后配置系统环境变量,就可以开始使用这个版本的JDK进行Java程序的开发和运行。 1. **JDK1.6**:这是Java的...
6. **NIO.2**:Java 7之前,Java的非阻塞I/O特性在NIO(New I/O)包中,而在JDK1.6中,虽然没有完整的NIO.2,但已经开始引入了一些新特性,如FileChannel的transferTo和transferFrom方法,用于提高文件传输效率。...
6. **JAX-RPC(Java API for XML-Based RPC)向JAX-WS的过渡**:在JDK 1.6之前,JAX-RPC被广泛用于构建Web服务,但在JDK 1.6中,JAX-WS逐渐取代了JAX-RPC,成为推荐的Web服务编程模型,因为它更符合WS-*标准,并且...
- **Swing**:这个轻量级的GUI库在JDK1.6中得到了进一步的优化,提供了更丰富的组件和更好的用户体验。 - **NIO.2**:引入了新的非阻塞I/O(New I/O)框架,提供了一种更为高效的数据传输方式,尤其是对于网络编程和...
4. **动态代理**:JDK1.6增强了动态代理,允许开发者在运行时创建接口的实现类,这对于AOP(面向切面编程)和其他设计模式的应用非常有用。 5. **泛型的改进**:这个版本的泛型支持更加完善,包括类型推断,使得...
虽然JDK 1.6不再获得官方的更新和支持,但在某些情况下,例如维护旧系统或兼容旧软件时,它仍然具有重要的价值。为了确保系统安全和稳定,使用这种旧版本的JDK时,必须谨慎评估风险,并且在可能的情况下尽快迁移到更...
Java Development Kit(JDK)是Java编程语言的核心组件,它为开发者提供了编译、调试和运行Java应用程序...尽管JDK已经有了更先进的版本,但JDK 1.6因其稳定性、广泛的应用和特定的兼容需求,仍然在某些场景中被使用。
**Java Development Kit (JDK) 1.6稳定版详解** ...虽然后续版本带来了更多新特性和性能优化,但在某些特定场景下,尤其是需要向后兼容旧代码或依赖特定API的情况下,JDK 1.6依然具有其不可替代的价值。
在这个"jaxb2 demo"中,我们将探讨JDK 1.6中的一些重要特性以及JAXB 2.0的相关应用。 1. **泛型增强**: Java JDK 1.6对泛型的支持进行了增强,包括类型推断(Type Inference)和泛型通配符的改进。类型推断使得在...
在标题"jdk1.6安装包.exe.zip"中,我们了解到这是一个针对Windows 64位系统的JDK 1.6安装程序的压缩文件。".exe"后缀表明这是一个可执行文件,通常用于Windows环境下的程序安装。".zip"则表示该文件是压缩格式,需要...
这个版本的JDK是Oracle公司发布的一个早期版本,对于需要在旧系统或项目中使用Java 1.6的开发者来说尤为重要。 JDK 1.6,也被称为Java SE (Standard Edition) 6,是在2006年发布的,引入了许多新特性和改进。以下是...
对于JDK 1.6的中文版,这对于中文环境下的开发者来说尤其有用,因为语言障碍的消除可以提高阅读效率,使开发者更快地理解和应用Java API。 **JDK 1.6 的主要特性** 1. **动态语言支持**:JDK 1.6引入了JSR 223...
在JDK1.6中,JAXB2.0被引入到了Java SE平台。 - **JAXB2**相对于之前的版本(JSR31)做了许多改进,特别是在使用Java 5的注解(Annotations)来简化配置方面。这使得开发者可以轻松地标记需要绑定的类和属性,减少了...
总之,JDK 1.6作为一个经典的Java开发版本,其强大的功能和稳定性使其在许多项目中依然被广泛使用。无论是初学者还是经验丰富的开发者,理解并掌握这个版本的特点和使用方法,对于提升开发效率和代码质量都具有重要...
【标题】"JDK1.6缺省文件"指的是Java Development Kit 1.6版本的默认组件和库文件,这些文件通常包含在JDK的zip压缩包中,无需经过安装过程即可使用。JDK是Java编程语言的核心工具集,包含了编译器、解释器、调试器...
在本文中,我们将深入探讨JDK 1.6的关键特性、安装过程以及如何使用它来开发Java程序。 一、JDK 1.6的关键特性 1. 改进的性能:JDK 1.6通过优化JVM提高了程序运行速度,包括改进的垃圾收集算法和更高效的内存管理...
32位JDK则适用于32位操作系统,虽然内存管理上存在限制,但在某些旧系统或对内存需求不高的场景下仍可使用。 总之,JDK 6是Java历史上的一个重要里程碑,它的许多特性至今仍被广泛使用。如果你需要这个版本的JDK,...
2. **动态代理类**:Java 1.6引入了`java.lang.reflect.Proxy`类,允许开发者在运行时创建接口的代理实现,用于实现AOP(面向切面编程)或其他动态行为。 3. **改进的并发性**:JDK1.6增强了多线程处理能力,例如`...