`

在Netbeans 5.5.1中使用JAXB所遇到的问题

阅读更多
最近在忙着赶毕业设计,所选用的IDE是Netbeans5.5.1
在毕业设计过程中,需要使用xml与java object之间的相互转化。
经过试探一些这方面的技术,最终将目光停在了JAXB上。
JAXB的好处我就不在说什么了?大家可以自己Google一下,网上很多,
我这里要说的就是,在JavaSE 6 的版本中,以及添加了默认对JAXB的支持,在命令行下面就可以直接运行如下代码~(这段代码是我在网上找到的,仅仅是想显示一下JAXB的方便与强大)
/*
* J2S.java
*
* Created on June 10, 2007, 3:53 AM
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/

package org.eric.test.webservice;

import javax.xml.bind.*;
import javax.xml.bind.annotation.*;

/**
*
* @author shjy.nicholas
*/
public class J2S {
   
    /** Creates a new instance of J2S */
    public J2S () {
    }
   
    public static void main (String[] args) {
        try {
            JAXBContext context = JAXBContext.newInstance (Point.class);
            Marshaller m = context.createMarshaller ();
           
            m.setProperty (Marshaller.JAXB_FORMATTED_OUTPUT, true);
            Point p = new Point (3, 4);
            m.marshal (p, System.out);
        } catch (JAXBException jex) {
            System.out.println ("JAXB Binding Exception");
            jex.printStackTrace ();
        }
    }
    @XmlRootElement
    private static class Point {
        int x;
        int y;
        public Point () {
        }
        public Point (int x, int y) {
            this.x = x;
            this.y = y;
        }
        public void setX (int x) {
            this.x = x;
        }
        public void setY (int y) {
            this.y = y;
        }
        public int getX () {
            return x;
        }
        public int getY () {
            return y;
        }
    }
}

运行的结果:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<point>
    <x>3</x>
    <y>4</y>
</point>

但如果直接在Netbeas下面运行,你就会得到如下的错误:
Exception in thread "main" java.lang.LinkageError: JAXB 2.0 API is being loaded from the bootstrap classloader, but this RI (from jar:file:/D:/Application/Dev/Java/netbeans-5.5.1/ide7/modules/ext/jaxws21/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/)
        at com.sun.xml.bind.v2.model.impl.ModelBuilder.<clinit>(ModelBuilder.java:136)
        at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:406)
        at com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:270)
        at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:103)
        at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:81)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:210)
        at javax.xml.bind.ContextFinder.find(ContextFinder.java:368)
        at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:574)
        at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:522)
        at org.eric.test.webservice.J2S.main(J2S.java:27)
Java Result: 1

让我们来看一下,就会知道是从bootstrap加载的时候,加载的是JAXB 2.0,而JAXB RI(JAXB下的一个子项目)需要的是2.1的。
在网上搜了一下,发现了SUN公司的endorsed介绍(http://java.sun.com/j2se/1.5.0/docs/guide/standards/)
具体做法如下:
在%JAVA_HOME%\jre\lib目录下新建一个名为的endorsed文件夹,将我们所需要的JAXB 2.1的jar包放到这个目录当中,这里我们需要的是jaxb-api.jar和jaxws-api.jar

按照上面的方法处理之后,在Netbeans下面就不错在出现错误了。

在我寻找XML和Java Object互操作的技术的时候,下面的技术也是很值得称赞的:
Stax,XStream, Zeus(使用了Apache的Xerces)。
分享到:
评论
3 楼 xo_tobacoo 2009-02-11  

standard location:

    <java-home>\lib\endorsed          [Microsoft Windows]
    <java-home>/lib/endorsed          [Solaris or Linux]

Here <java-home> refers to the directory where the runtime software is installed (which is the top-level directory of the J2SE Runtime Environment or the jre directory in the JDK).


为什么不管用!我在jre的顶层目录和jdk/jre/lib里都添加了!
2 楼 shjy.nicholas 2008-01-10  
不需要的,直接按照我上面的做法即可。
1 楼 bennycompile 2007-11-14  
不行呀,是不是还得重新建项目

相关推荐

    贪吃蛇游戏源代码netbeans5.5.1

    【贪吃蛇游戏源代码netbeans5.5.1】是一个经典的编程项目,它使用了Java语言,并在集成开发环境(IDE)NetBeans 5.5.1中进行开发。贪吃蛇游戏是一款广为人知的简单游戏,玩家通过控制蛇的移动来吃食物,每次吃到食物...

    如何在NetBeans IDE 5.5.1上安装WSIT 插件

    在NetBeans IDE 5.5.1中安装WSIT插件是提升开发能力的关键步骤,尤其对于那些需要构建和调试跨平台Web服务的开发者来说。以下是如何进行安装的详细步骤: 1. **启动NetBeans IDE**:首先,确保你已经安装并运行了...

    netbeans 开发 web service

    - 在NetBeans中选择“文件”&gt;“新建项目”,选择“Web”&gt;“Web应用程序”,并为项目命名,例如“wsone”。 - 在“源代码级别”设置中选择与J2SE版本相匹配的选项。 2. **创建Web Service**: - 在项目上右键选择...

    NetBeans中添加背景图片附源码

    在NetBeans中添加背景图片是一项常见的个性化设置任务,可以让你的开发环境更加独特且符合个人审美。NetBeans是一个流行的开源集成开发环境(IDE),支持多种编程语言,如Java、C++、PHP等。通过自定义背景图片,...

    NETBeans+IDE使用说明

    在使用 NetBeans IDE 之前,需要下载并安装 NetBeans IDE 中国教育考试版(2007)。下载地址为 http://www.neea.edu.cn、http://www.ncre.cn/和 http://211.151.94.22/TT/NB_NCRE_V2_0711.zip。下载完成后,解压缩到...

    NetBeans 教程(如何使用NetBeans)

    - 如果有编译错误,NetBeans会在编辑器中高亮显示,并提供可能的修复建议。 5. **调试Java程序** - 在需要调试的代码行上设置断点,点击工具栏上的调试按钮或按`F5`开始调试。 - 在调试模式下,你可以逐步执行...

    JAXB.zip_jaxb

    在JAXB中,它可以用于映射XML架构到本地的Java类,避免网络查找,提高性能。 **nbproject** 目录包含了NetBeans项目的元数据,包括项目设置、构建配置、依赖关系等。这些信息帮助NetBeans理解项目结构并进行有效的...

    在Netbeans中使用Struts2.0+Spring2.5+Hibernate框架

    ### 在Netbeans中使用Struts2.0+Spring2.5+Hibernate框架 #### 一、概述 在当今的企业级应用程序开发中,采用MVC(Model-View-Controller)架构模式的框架组合变得越来越普遍。其中,Struts2、Spring与Hibernate...

    让Struts2 在NetBeans 6中安家

    为了能够在项目中使用Struts2框架,我们需要创建一个Library来包含所有的Struts2库文件。具体操作如下: 1. 打开“Tools”菜单,选择“Libraries”。 2. 点击“New Library”,输入Library名称,例如“Struts2”,...

    NetBeans6.0中使用WebServices

    在本文中,我们将深入探讨如何在NetBeans 6.0集成开发环境中使用Web服务。Web服务是一种基于标准的,能够使应用程序之间进行交互的方式。在NetBeans 6.0中,开发和消费Web服务的过程变得相对简单,尤其对于初学者来...

    Netbeans如何使用JUnit

    本篇文章将详细讲解如何在NetBeans中使用JUnit进行测试。 首先,确保你已经安装了支持JUnit的NetBeans版本。NetBeans通常会自带JUnit库,但如果你的版本较旧或没有包含JUnit,可以通过以下步骤添加: 1. 打开...

    netbeans中使用的monaco字体并显示中文

    本文将详细讨论如何在NetBeans中使用Monaco字体,并确保它能正确显示中文字符。 Monaco字体是一款由Apple公司设计的固定宽度字体,最初用于Mac OS X系统,尤其适合编程环境,因为它具有良好的可读性和清晰的符号...

    NetBeans+IDE+使用说明和示例教程.pdf

    - 在NetBeans IDE中打开该文件,然后在代码中添加适当的逻辑来实现目录判断。这通常涉及到使用Java的标准库,如`java.io.File`来检查目录是否存在。 2. **示例:打开已有源码并补充加法运算功能的Applet小程序** ...

    NetBeans中连接MySQL数据库.pdf

    在NetBeans中连接MySQL数据库后,可以使用NetBeans管理MySQL数据库,包括创建数据库表、插入数据、查询数据等。下面是在NetBeans中管理MySQL数据库的步骤: 1. 在NetBeans中,点击"窗口"菜单,然后选择"服务"选项卡...

    NetBeans6.0中使用WebService

    标题:“NetBeans6.0中使用WebService” 描述:本教程主要涵盖了在NetBeans 6.0集成开发环境中如何利用WebService进行开发的基础知识,旨在帮助初学者快速入门。 **一、Web服务简介** Web服务是一种基于互联网的、...

    Netbeans环境下使用GTK+.

    NetBeans作为一款强大的集成开发环境(IDE),支持多种编程语言和框架,包括C和C++,因此在NetBeans中使用GTK+进行开发是完全可行的。下面我们将详细探讨如何在NetBeans环境下配置和使用GTK+。 首先,确保你已经在...

    部署asterisk项目到Netbeans进行实时调试(图解)

    描述中提到,通过在Linux环境下使用Netbeans 5.5.1,开发者可以更有效地理解和调试Asterisk的源代码,而不是手动逐个文件分析。这种方法能够提高开发效率,特别是在复杂的模块化代码结构中。安装Netbeans和C/C++插件...

    netbeans 使用cvs的方法.doc

    本文详细介绍了在NetBeans中使用CVS的基本流程,包括配置CVS根、签出项目、基本的操作方法等。通过这些步骤,开发者可以有效地利用CVS进行版本控制,提高团队协作效率。希望本文能帮助大家更好地理解和掌握NetBeans...

Global site tag (gtag.js) - Google Analytics