加载的两个不同的xmlbean的jar包,包含两个同名的方法,包名不同,调用这俩个jar包中的方法时候写上全路径还是会报错,怎么处理xmlbeanjar同名

解决方案 »

  1.   

    报错那会报出来的什么?
    类型不对?
    还是class not found呢?
      

  2.   


    嗯,我调用的时候写的是把包名带上的,但是还是会报错
    错误类型
    java.lang.ClassCastException: noNamespace.impl.MessageDocumentImpl cannot be cast to sample.xmlbean.MessageDocument
      

  3.   


    图片中sample.xmlbean.MessageDocument doc处报错,错误类型在楼上有
      

  4.   


    图片中sample.xmlbean.MessageDocument doc处报错,错误类型在楼上有你这种用法 也需要引包的 ,如果你调用的是静态方法。
    用方法静态导入试试  import static 包名.类名.静态成员变量;
      

  5.   


    图片中sample.xmlbean.MessageDocument doc处报错,错误类型在楼上有你这种用法 也需要引包的 ,如果你调用的是静态方法。
    用方法静态导入试试  import static 包名.类名.静态成员变量;
    我试了一下,还是不起作用,不知道你这个具体是怎么操作的呢,我是直接写了一个import static的语句,要不麻烦你帮我看下?q 593769030
      

  6.   


    嗯,我调用的时候写的是把包名带上的,但是还是会报错
    错误类型
    java.lang.ClassCastException: noNamespace.impl.MessageDocumentImpl cannot be cast to sample.xmlbean.MessageDocument你的错是类型转换错啊
      

  7.   


    嗯,我调用的时候写的是把包名带上的,但是还是会报错
    错误类型
    java.lang.ClassCastException: noNamespace.impl.MessageDocumentImpl cannot be cast to sample.xmlbean.MessageDocument你的错是类型转换错啊
    嗯,是的,是类型转换错误,就是默认把俩个同名的类中的其中一个强制转换成了另外一个类,但是这种转换是肯定会报错的,两个类中的方法是不一样的
      

  8.   


    嗯,我调用的时候写的是把包名带上的,但是还是会报错
    错误类型
    java.lang.ClassCastException: noNamespace.impl.MessageDocumentImpl cannot be cast to sample.xmlbean.MessageDocument你的错是类型转换错啊
    我是调用了xmlbean方法产生的两个jar包,不同的包名,相同的类名,然后引用jar包的时候哪个jar包放在上面,就默认使用哪个jar包,而这两个jar包必须在同一个类中使用,作用是通信时发送出去的报文格式和接收时候的报文格式
      

  9.   


    嗯,我调用的时候写的是把包名带上的,但是还是会报错
    错误类型
    java.lang.ClassCastException: noNamespace.impl.MessageDocumentImpl cannot be cast to sample.xmlbean.MessageDocument
    你的错是类型转换错啊
    我是调用了xmlbean方法产生的两个jar包,不同的包名,相同的类名,然后引用jar包的时候哪个jar包放在上面,就默认使用哪个jar包,而这两个jar包必须在同一个类中使用,作用是通信时发送出去的报文格式和接收时候的报文格式你把完整的代码(带代码行数)以及报错的完整信息(源文件的哪一行出错)发出来看下
      

  10.   

    嗯,我调用的时候写的是把包名带上的,但是还是会报错
    错误类型
    java.lang.ClassCastException: noNamespace.impl.MessageDocumentImpl cannot be cast to sample.xmlbean.MessageDocument
    你的错是类型转换错啊
    我是调用了xmlbean方法产生的两个jar包,不同的包名,相同的类名,然后引用jar包的时候哪个jar包放在上面,就默认使用哪个jar包,而这两个jar包必须在同一个类中使用,作用是通信时发送出去的报文格式和接收时候的报文格式你把完整的代码(带代码行数)以及报错的完整信息(源文件的哪一行出错)发出来看下要不你加下我,这边代码挺长的,截图不是特别方便 q 593769030
      

  11.   

    package com.sun.client;
    import java.io.DataInputStream;
    import java.io.IOException;
    import java.net.Socket;
    import java.net.UnknownHostException;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import cryptix.jce.provider.MD5;public class QCJCharge extends Thread{
    private String ip="";
    private int port;
    private Socket client;
    private Connection dbconn;
    private String SendID_out="",SendID_in="";
    private String ReceiverID_out="",ReceiverID_in="";
    private String MessageClass_out="",MessageClass_in="";
    private String MessageType_out="",MessageType_in="";
    private String ReqDate_out="",ReqDate_in="";
    private String MessageID_out="",MessageID_in="";
    private String MessageLength_out="";
    private String ReqTime_out="";
    private String Result_in="";
    private String Info_in="";
    private String TradNo_out="",TradNo_in="";
    private String ReturnCode_in="";
    private String ReturnInfo_in="";
    private String AdrNo_out="";
    private String BankNo_out="";
    private String TradTime_out="";
    private String ChannelNo_out="";
    private String TermNo_out="";
    private String OperNo_out="";
    private String ICCardNo_out="";
    private String RaiseMoney_out="";
    private String ICCardBalance_out="";
    private String CardTradNo_out="";
    private String RespseqNo_out="";
    private String CurrencyType_out="";
    private String AccountNo_out="";
    private String RespseqNo_in="";
    private String CustomNo_in="";
    private String ICCardNo_in="";
    private String UserName_in="";
    private String RaiseMoney_in="";
    private String RaiseBalance_in="";
    private String DocumentsNo_in="";
    private String Phone_in="";
    private PreparedStatement pstmt_in,pstmt_out;
    private ResultSet rs;

    /**
     * 构造方法
     * @param ip
     * @param port
     */
    public QCJCharge(String ip,int port){
    this.ip=ip;
    this.port=port;
    }
    public QCJCharge(){}
    /**
     * 初始化客户端
     * @param ip
     * @param port
     */
    private void InitClient(String ip,int port){
    try {
    client=new Socket(ip,port);
    } catch (Exception e) {

    }
    /**
     * 连接数据库
     */
    private void connDB() {
            try {
             Class.forName("com.mysql.jdbc.Driver");
    dbconn=DriverManager.getConnection("jdbc:mysql://localhost:3306/temp", "root", "sa");
            } catch (SQLException e) {
            } catch (ClassNotFoundException e) {
    e.printStackTrace();
    }
        }
    /**
     * 获取数据库里面存储的数据
     */
    private void getData(){
    this.connDB();
    String sql="select * from temp1";
    try{
     pstmt_out=dbconn.prepareStatement(sql);
     rs=pstmt_out.executeQuery();
    while(rs.next()){
    SendID_out=rs.getString("SendID");
    ReceiverID_out=rs.getString("ReceiverID");
    MessageClass_out=rs.getString("MessageClass");
    MessageType_out=rs.getString("MessageType");
    ReqDate_out=rs.getString("ReqDate");
    MessageID_out=rs.getString("MessageID");
    ReqTime_out=rs.getString("ReqTime");
    TradNo_out=rs.getString("TradNo");
    AdrNo_out=rs.getString("AdrNo");
    BankNo_out=rs.getString("BankNo");
    TradTime_out=rs.getString("TradTime");
    ChannelNo_out=rs.getString("ChannelNo");
    TermNo_out=rs.getString("TermNo");
    OperNo_out=rs.getString("OperNo");
    ICCardNo_out=rs.getString("ICCardNo");
    RaiseMoney_out=rs.getString("RaiseMoney");
    ICCardBalance_out=rs.getString("ICCardBalance");
    CardTradNo_out=rs.getString("CardTradNo");
    RespseqNo_out=rs.getString("RespseqNo");
    CurrencyType_out=rs.getString("CurrencyType");
    AccountNo_out=rs.getString("AccountNo");

    }}catch(SQLException e){
    }
    try {
    rs.close();
    pstmt_out.close();
    dbconn.close();
    } catch (SQLException e) {
    }
    }
    /**
     * 对数据长度进行检查
     */
    private void CheckNumber(){
    this.getData();
    for(int i=0;i<6-MessageID_out.length();i++){
    MessageID_out='0'+MessageID_out;
    }

    }
    /**
     * 产生XML报文
     */
    private String CreateXML(){
    this.CheckNumber();
    //create Document
    noNamespace.MessageDocument doc=noNamespace.MessageDocument.Factory.newInstance();
    //Add new Header
    noNamespace.MessageDocument.Message.Header header=doc.addNewMessage().addNewHeader();
    header.setSendID(SendID_out);
    header.setReceiverID(ReceiverID_out);
    header.setMessageClass(MessageClass_out);
    header.setMessageType(MessageType_out);
    header.setReqDate(ReqDate_out);
    header.setMessageID(MessageID_out);
    header.setReqTime(ReqTime_out);
    //Add new Body
    noNamespace.MessageDocument.Message.Body body=doc.addNewMessage().addNewBody();
    body.setTradNo(TradNo_out);
    body.setAdrNo(AdrNo_out);
    body.setBankNo(BankNo_out);
    body.setTradTime(TradTime_out);
    body.setReqDate(ReqDate_out);
    body.setChannelNo(ChannelNo_out);
    body.setTermNo(TermNo_out);
    body.setOperNo(OperNo_out);
    body.setICCardNo(ICCardNo_out);
    body.setRaiseMoney(RaiseMoney_out);
    body.setICCardBalance(ICCardBalance_out);
    body.setCardTradNo(CardTradNo_out);
    body.setRespseqNo(RespseqNo_out);
    body.setCurrencyType(CurrencyType_out);
    body.setAccountNo(AccountNo_out);
    String  XMLString=doc.xmlText();
    return XMLString;
    }
    /**
     * 产生tcp报文
     * 调用LZ77算法对XMLMessage进行压缩处理
     * tcp报文中包含的MD5值由联网中心提供的c源程序计算得出
     */
    private String CreateTCPMessage(){

    String TCPMessage="";
    String XMLMessage=this.CreateXML();
    // TODO Auto-generated catch block  LZ77算法没做,数据没有压缩
    MD5 md5=new MD5();
    String strmd5=md5.toMD5(XMLMessage);
    MessageLength_out=String.valueOf(XMLMessage.length());
    for(int i=0;i<6-MessageLength_out.length();i++){
    MessageLength_out='0'+MessageLength_out;
    }
    TCPMessage=SendID_out+MessageClass_out+MessageType_out+ReqDate_out+MessageID_out+MessageLength_out+strmd5+XMLMessage;
    return TCPMessage;


    }
    /**
     * 连接server端,进行发送和接收数据
     */
    public void run(){
    //TODO ip和端口需要更改,使用的是系统定义的socket
    this.InitClient(ip, port);
    try {
    //向server端发送数据部分
    //TODO此处改动过
    //PrintWriter dos=new PrintWriter(client.getOutputStream());
    //dos.write(this.CreateTCPMessage());
    //dos.flush();
    //dos.close();
    //try {
    //Thread.sleep(5000);
    //} catch (InterruptedException e) {
    //}

    //从server端获取数据部分
    DataInputStream dis=new DataInputStream(client.getInputStream());
    String TCPMessage=dis.readUTF();
    System.out.println(TCPMessage);
    this.getElement(TCPMessage);
    //dis.close();


    } catch (UnknownHostException e) {
    } catch (IOException e) {
    }
    try {
    client.close();
    } catch (IOException e) {
    }
    }
    /**
     * @param TCPMessage
     */
    private void getElement(String TCPMessage){
    //截取字符串,获得xml报文
    System.out.println("进入getElement");
    String XMLMessage=TCPMessage.substring(82);
    // TODO Auto-generated catch block 解压缩
    try {
    System.out.println("进入xmlbean");
    System.out.println(XMLMessage);
    sample.xmlbean.MessageDocument doc=sample.xmlbean.MessageDocument.Factory.parse(XMLMessage);
    System.out.println("~~~");
    sample.xmlbean.MessageDocument.Message message=doc.getMessage();
    sample.xmlbean.MessageDocument.Message.Header header=message.getHeaderArray(0);
    SendID_in=header.getSendID();
    ReceiverID_in=header.getReceiverID();
    MessageClass_in=header.getMessageClass();
    MessageType_in=header.getMessageType();
    ReqDate_in=header.getReqDate();
    MessageID_in=header.getMessageID();
    Result_in=header.getResult();
    Info_in=header.getInfo();
    sample.xmlbean.MessageDocument.Message.Body body=message.getBodyArray(0);
    TradNo_in=body.getTradNo();
    ReturnCode_in=body.getReturnCode();
    ReturnInfo_in=body.getReturnInfo();
    RespseqNo_in=body.getRespseqNo();
    CustomNo_in=body.getCustomNo();
    ICCardNo_in=body.getICCardNo();
    UserName_in=body.getUserName();
    RaiseMoney_in=body.getRaiseMoney();
    RaiseBalance_in=body.getRaiseBalance();
    DocumentsNo_in=body.getDocumentsNo();
    Phone_in=body.getPhone();
    }catch(Exception e){
    System.out.println(e.toString());
    }
    this.insertData();
    }
    private void insertData(){
    System.out.println("进入insertData");
    System.out.println(SendID_in);
    this.connDB();
    String sql="insert into temp2 values(null,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
    try {
    System.out.println("进入try");
    pstmt_in=dbconn.prepareStatement(sql);
    System.out.println("pstmt");
    pstmt_in.setString(1, SendID_in);
    pstmt_in.setString(2, ReceiverID_in);
    pstmt_in.setString(3, MessageClass_in);
    pstmt_in.setString(4, MessageType_in);
    pstmt_in.setString(5, ReqDate_in);
    pstmt_in.setString(6, MessageID_in);
    pstmt_in.setString(7, Result_in);
    pstmt_in.setString(8, Info_in);
    pstmt_in.setString(9, TradNo_in);
    pstmt_in.setString(10, ReturnCode_in);
    pstmt_in.setString(11,ReturnInfo_in);
    pstmt_in.setString(12,RespseqNo_in);
    //pstmt_in.setString(12, ReqDate_in);
    pstmt_in.setString(13, CustomNo_in);
    pstmt_in.setString(14, ICCardNo_in);
    pstmt_in.setString(15, UserName_in);
    pstmt_in.setString(16, RaiseMoney_in);
    pstmt_in.setString(17, RaiseBalance_in);
    pstmt_in.setString(18,DocumentsNo_in);
    pstmt_in.setString(19, Phone_in);
    pstmt_in.execute();
    } catch (SQLException e) {

    }finally{
    try {
    //pstmt_in.close();
    //dbconn.close();
    } catch (Exception e) {
    }
    }
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
    try {
    QCJCharge testQCJ=new QCJCharge("127.0.0.1",1234);
    testQCJ.start();
    } catch (Exception e) {
    e.printStackTrace();
    }

    }}上面是通信客户端的代码,下面是通信服务端的编码
      

  12.   

    package com.sun.server;import java.io.BufferedReader;
    import java.io.DataOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.InputStreamReader;
    import java.net.ServerSocket;
    import java.net.Socket;public class QCJChargeServerTest extends Thread {
    private Socket server;
    public QCJChargeServerTest(Socket s){
    this.server=s;
    }
    /**
     * @param args
     */
    public static void main(String[] args) {
    try {
    ServerSocket serverSocket=new ServerSocket(1234);
    QCJChargeServerTest test=new QCJChargeServerTest(serverSocket.accept());
    test.start();
    } catch (Exception e) {
    e.printStackTrace();
    }

    }

    private String getXML() throws Exception{
    File file=new File("C:/Users/Administrator/Desktop/QCJChargeRes.xml");
    String XMLMessage="";
    InputStreamReader isr=new InputStreamReader(new FileInputStream(file), "GBK");
    BufferedReader read=new BufferedReader(isr);
    String temp;
    while((temp=read.readLine())!=null){
    XMLMessage=XMLMessage+temp;
    }
    return XMLMessage;
    }
    public void run(){
    try {
    System.out.println("进入server端的run()");
    //BufferedReader in=new BufferedReader(new InputStreamReader(server.getInputStream()));
    //Thread.sleep(5000);
    //System.out.println(in.readLine());
    String tcpHead="SendIDMessageClassMessageTypeReqDateMessageID00765D020698BFF7ADF592072E3AB6E9A7FDD";
    String TCPMessage=tcpHead+this.getXML();
    DataOutputStream dos=new DataOutputStream(server.getOutputStream());
    dos.writeUTF(TCPMessage);
    dos.flush();
    System.out.println(TCPMessage);
    //System.out.println(TCPMessage);


    }  catch (Exception e) {
    e.printStackTrace();
    }
    }}