Android Studio jPOS org.jpos.iso.ISOException:java.lang.ClassNotFoundException

如何解决Android Studio jPOS org.jpos.iso.ISOException:java.lang.ClassNotFoundException

我正在尝试在我的android项目中使用jpos,我从互联网的一个示例中下载了fields.xml。我想知道为什么或如何在调用GenericPackager函数解决错误

java.lang.Exception: org.jpos.iso.ISOException: java.lang.classNotFoundException: Didn't find class "org.apache.crimson.parser.XMLReaderImpl" on path: DexPathList[[zip file "/data/app/com.Activity-DQzzXo3E8QpU-bmLtFYx-Q==/base.apk"],nativeLibraryDirectories=[/data/app/com.Activity-DQzzXo3E8QpU-bmLtFYx-Q==/lib/arm,/system/lib,/vendor/lib]]

package com.Activity.ISO;

import android.util.Log;

import com.Activity.Others.App;

import org.jpos.iso.ISOException;
import org.jpos.iso.ISOMsg;
import org.jpos.iso.packager.GenericPackager;
import org.w3c.dom.Document;

import java.io.InputStream;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

public class PackISOMessage {


    public String buildisOMessage() throws Exception {

        try {
            // Load package from resources directory.
            //InputStream is = getClass().getResourceAsstream("fields.xml");

            InputStream xmlDoc = App.getContext().getAssets().open("fields.xml");

            //String file = "/fields.xml";
            GenericPackager packager = new GenericPackager(xmlDoc); //Here is debug error

            ISOMsg isoMsg = new ISOMsg();
            isoMsg.setPackager(packager);
            isoMsg.setMTI("0200");

            isoMsg.set(3,"000010");
            isoMsg.set(4,"1500");
            isoMsg.set(7,"1206041200");
            isoMsg.set(11,"000001");
            isoMsg.set(41,"12340001");
            isoMsg.set(49,"840");
            printISOMessage(isoMsg);

            byte[] result = isoMsg.pack();
            return new String(result);
        } catch (ISOException e) {
            throw new Exception(e);
        }
    }

    private void printISOMessage(ISOMsg isoMsg) {

        try {
            System.out.printf("MTI = %s%n",isoMsg.getMTI());
            for (int i = 1; i <= isoMsg.getMaxField(); i++) {
                if (isoMsg.hasField(i)) {
                    System.out.printf("Field (%s) = %s%n",i,isoMsg.getString(i));
                }
            }
        } catch (ISOException e) {
            e.printstacktrace();
        }
    }


}

这是我的fields.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE isopackager PUBLIC "-//jpos/jpos Generic Packager DTD 1.0//EN" "jpos.org/dtd/generic-packager-1.0.dtd" >

<isopackager>
  <isofield id="0" length="4" name="MESSAGE TYPE INDICATOR" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="1" length="16" name="BIT MAP" class="org.jpos.iso.IFA_BITMAP"/>
  <isofield id="2" length="19" name="SECRET ID" class="org.jpos.iso.IFA_LLNUM"/>
  <isofield id="3" length="6" name="PROCESSING CODE" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="4" length="12" name="AMOUNT,TRANSACTION" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="5" length="12" name="AMOUNT,SETTLEMENT" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="6" length="12" name="AMOUNT,CARDHOLDER BILLING" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="7" length="10" name="TRANSMISSION DATE AND TIME" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="8" length="8" name="AMOUNT,CARDHOLDER BILLING FEE" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="9" length="8" name="CONVERSION RATE,SETTLEMENT" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="10" length="8" name="CONVERSION RATE,CARDHOLDER BILLING" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="11" length="6" name="SYstem TRACE AUDIT NUMBER" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="12" length="6" name="TIME,LOCAL TRANSACTION" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="13" length="4" name="DATE,LOCAL TRANSACTION" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="14" length="4" name="DATE,EXPIRATION" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="15" length="4" name="DATE,SETTLEMENT" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="16" length="4" name="DATE,CONVERSION" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="17" length="4" name="DATE,CAPTURE" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="18" length="4" name="MERCHANTS TYPE" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="19" length="3" name="ACQUIRING INSTITUTION COUNTRY CODE" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="20" length="3" name="PAN EXTENDED COUNTRY CODE" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="21" length="3" name="FORWARDING INSTITUTION COUNTRY CODE" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="22" length="3" name="POINT OF SERVICE ENTRY MODE" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="23" length="3" name="CARD SEQUENCE NUMBER" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="24" length="3" name="NETWORK INTERNATIONAL IDENTIFIEER" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="25" length="2" name="POINT OF SERVICE CONDITION CODE" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="26" length="2" name="POINT OF SERVICE PIN CAPTURE CODE" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="27" length="1" name="AUTHORIZATION IDENTIFICATION RESP LEN" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="28" length="9" name="AMOUNT,TRANSACTION FEE" class="org.jpos.iso.IFA_AMOUNT"/>
  <isofield id="29" length="9" name="AMOUNT,SETTLEMENT FEE" class="org.jpos.iso.IFA_AMOUNT"/>
  <isofield id="30" length="9" name="AMOUNT,TRANSACTION PROCESSING FEE" class="org.jpos.iso.IFA_AMOUNT"/>
  <isofield id="31" length="9" name="AMOUNT,SETTLEMENT PROCESSING FEE" class="org.jpos.iso.IFA_AMOUNT"/>
  <isofield id="32" length="11" name="ACQUIRING INSTITUTION IDENT CODE" class="org.jpos.iso.IFA_LLNUM"/>
  <isofield id="33" length="11" name="FORWARDING INSTITUTION IDENT CODE" class="org.jpos.iso.IFA_LLNUM"/>
  <isofield id="34" length="28" name="PAN EXTENDED" class="org.jpos.iso.IFA_LLCHAR"/>
  <isofield id="35" length="37" name="TRACK 2 DATA" class="org.jpos.iso.IFA_LLNUM"/>
  <isofield id="36" length="104" name="TRACK 3 DATA" class="org.jpos.iso.IFA_LLLCHAR"/>
  <isofield id="37" length="12" name="RETRIEVAL REFERENCE NUMBER" class="org.jpos.iso.IF_CHAR"/>
  <isofield id="38" length="6" name="AUTHORIZATION IDENTIFICATION RESPONSE" class="org.jpos.iso.IF_CHAR"/>
  <isofield id="39" length="2" name="RESPONSE CODE" class="org.jpos.iso.IF_CHAR"/>
  <isofield id="40" length="3" name="SERVICE RESTRICTION CODE" class="org.jpos.iso.IF_CHAR"/>
  <isofield id="41" length="8" name="CARD ACCEPTOR TERMINAL IDENTIFICACION" class="org.jpos.iso.IF_CHAR"/>
  <isofield id="42" length="15" name="CARD ACCEPTOR IDENTIFICATION CODE" class="org.jpos.iso.IF_CHAR"/>
  <isofield id="43" length="40" name="CARD ACCEPTOR NAME/LOCATION" class="org.jpos.iso.IF_CHAR"/>
  <isofield id="44" length="25" name="ADITIONAL RESPONSE DATA" class="org.jpos.iso.IFA_LLCHAR"/>
  <isofield id="45" length="76" name="TRACK 1 DATA" class="org.jpos.iso.IFA_LLCHAR"/>
  <isofield id="46" length="999" name="ADITIONAL DATA - ISO" class="org.jpos.iso.IFA_LLLCHAR"/>
  <isofield id="47" length="999" name="ADITIONAL DATA - NATIONAL" class="org.jpos.iso.IFA_LLLCHAR"/>
  <isofield id="48" length="999" name="ADITIONAL DATA - PRIVATE" class="org.jpos.iso.IFA_LLLCHAR"/>
  <isofield id="49" length="3" name="CURRENCY CODE,TRANSACTION" class="org.jpos.iso.IF_CHAR"/>
  <isofield id="50" length="3" name="CURRENCY CODE,SETTLEMENT" class="org.jpos.iso.IF_CHAR"/>
  <isofield id="51" length="3" name="CURRENCY CODE,CARDHOLDER BILLING" class="org.jpos.iso.IF_CHAR"/>
  <isofield id="52" length="16" name="PIN DATA" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="53" length="16" name="Security RELATED CONTROL informatION" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="54" length="120" name="ADDITIONAL AMOUNTS" class="org.jpos.iso.IFA_LLLCHAR"/>
  <isofield id="55" length="999" name="RESERVED ISO" class="org.jpos.iso.IFA_LLLCHAR"/>
  <isofield id="56" length="999" name="RESERVED ISO" class="org.jpos.iso.IFA_LLLCHAR"/>
  <isofield id="57" length="999" name="RESERVED NATIONAL" class="org.jpos.iso.IFA_LLLCHAR"/>
  <isofield id="58" length="999" name="RESERVED NATIONAL" class="org.jpos.iso.IFA_LLLCHAR"/>
  <isofield id="59" length="999" name="RESERVED NATIONAL" class="org.jpos.iso.IFA_LLLCHAR"/>
  <isofield id="60" length="999" name="RESERVED PRIVATE" class="org.jpos.iso.IFA_LLLCHAR"/>
  <isofield id="61" length="999" name="RESERVED PRIVATE" class="org.jpos.iso.IFA_LLLCHAR"/>
  <isofield id="62" length="999" name="RESERVED PRIVATE" class="org.jpos.iso.IFA_LLLCHAR"/>
  <isofield id="63" length="999" name="RESERVED PRIVATE" class="org.jpos.iso.IFA_LLLCHAR"/>
  <isofield id="64" length="8" name="MESSAGE AUTHENTICATION CODE FIELD" class="org.jpos.iso.IFA_BINARY"/>
  <isofield id="65" length="1" name="BITMAP,EXTENDED" class="org.jpos.iso.IFA_BINARY"/>
  <isofield id="66" length="1" name="SETTLEMENT CODE" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="67" length="2" name="EXTENDED PAYMENT CODE" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="68" length="3" name="RECEIVING INSTITUTION COUNTRY CODE" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="69" length="3" name="SETTLEMENT INSTITUTION COUNTRY CODE" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="70" length="3" name="NETWORK MANAGEMENT informatION CODE" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="71" length="4" name="MESSAGE NUMBER" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="72" length="4" name="MESSAGE NUMBER LAST" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="73" length="6" name="DATE ACTION" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="74" length="10" name="CREDITS NUMBER" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="75" length="10" name="CREDITS REVERSAL NUMBER" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="76" length="10" name="DEBITS NUMBER" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="77" length="10" name="DEBITS REVERSAL NUMBER" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="78" length="10" name="TRANSFER NUMBER" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="79" length="10" name="TRANSFER REVERSAL NUMBER" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="80" length="10" name="INQUIRIES NUMBER" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="81" length="10" name="AUTHORIZATION NUMBER" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="82" length="12" name="CREDITS,PROCESSING FEE AMOUNT" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="83" length="12" name="CREDITS,TRANSACTION FEE AMOUNT" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="84" length="12" name="DEBITS,PROCESSING FEE AMOUNT" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="85" length="12" name="DEBITS,TRANSACTION FEE AMOUNT" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="86" length="16" name="CREDITS,AMOUNT" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="87" length="16" name="CREDITS,REVERSAL AMOUNT" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="88" length="16" name="DEBITS,AMOUNT" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="89" length="16" name="DEBITS,REVERSAL AMOUNT" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="90" length="42" name="ORIGINAL DATA ELEMENTS" class="org.jpos.iso.IFA_NUMERIC"/>
  <isofield id="91" length="1" name="FILE UPDATE CODE" class="org.jpos.iso.IF_CHAR"/>
  <isofield id="92" length="2" name="FILE Security CODE" class="org.jpos.iso.IF_CHAR"/>
  <isofield id="93" length="6" name="RESPONSE INDICATOR" class="org.jpos.iso.IF_CHAR"/>
  <isofield id="94" length="7" name="SERVICE INDICATOR" class="org.jpos.iso.IF_CHAR"/>
  <isofield id="95" length="42" name="REPLACEMENT AMOUNTS" class="org.jpos.iso.IF_CHAR"/>
  <isofield id="96" length="16" name="MESSAGE Security CODE" class="org.jpos.iso.IFA_BINARY"/>
  <isofield id="97" length="17" name="AMOUNT,NET SETTLEMENT" class="org.jpos.iso.IFA_AMOUNT"/>
  <isofield id="98" length="25" name="PAYEE" class="org.jpos.iso.IF_CHAR"/>
  <isofield id="99" length="11" name="SETTLEMENT INSTITUTION IDENT CODE" class="org.jpos.iso.IFA_LLNUM"/>
  <isofield id="100" length="11" name="RECEIVING INSTITUTION IDENT CODE" class="org.jpos.iso.IFA_LLNUM"/>
  <isofield id="101" length="17" name="FILE NAME" class="org.jpos.iso.IFA_LLCHAR"/>
  <isofield id="102" length="28" name="FROM ACCOUNT" class="org.jpos.iso.IFA_LLCHAR"/>
  <isofield id="103" length="10" name="ACCOUNT IDENTIFICATION 2" class="org.jpos.iso.IFA_LLCHAR"/>
  <isofield id="104" length="100" name="TRANSACTION DESCRIPTION" class="org.jpos.iso.IFA_LLLCHAR"/>
  <isofield id="105" length="999" name="RESERVED ISO USE" class="org.jpos.iso.IFA_LLLCHAR"/>
  <isofield id="106" length="999" name="RESERVED ISO USE" class="org.jpos.iso.IFA_LLLCHAR"/>
  <isofield id="107" length="999" name="RESERVED ISO USE" class="org.jpos.iso.IFA_LLLCHAR"/>
  <isofield id="108" length="999" name="RESERVED ISO USE" class="org.jpos.iso.IFA_LLLCHAR"/>
  <isofield id="109" length="999" name="RESERVED ISO USE" class="org.jpos.iso.IFA_LLLCHAR"/>
  <isofield id="110" length="999" name="RESERVED ISO USE" class="org.jpos.iso.IFA_LLLCHAR"/>
  <isofield id="111" length="999" name="RESERVED ISO USE" class="org.jpos.iso.IFA_LLLCHAR"/>
  <isofield id="112" length="999" name="RESERVED NATIONAL USE" class="org.jpos.iso.IFA_LLLCHAR"/>
  <isofield id="113" length="999" name="RESERVED NATIONAL USE" class="org.jpos.iso.IFA_LLLCHAR"/>
  <isofield id="114" length="999" name="RESERVED NATIONAL USE" class="org.jpos.iso.IFA_LLLCHAR"/>
  <isofield id="115" length="999" name="RESERVED NATIONAL USE" class="org.jpos.iso.IFA_LLLCHAR"/>
  <isofield id="116" length="999" name="RESERVED NATIONAL USE" class="org.jpos.iso.IFA_LLLCHAR"/>
  <isofield id="117" length="999" name="RESERVED NATIONAL USE" class="org.jpos.iso.IFA_LLLCHAR"/>
  <isofield id="118" length="999" name="RESERVED NATIONAL USE" class="org.jpos.iso.IFA_LLLCHAR"/>
  <isofield id="119" length="999" name="RESERVED NATIONAL USE" class="org.jpos.iso.IFA_LLLCHAR"/>
  <isofield id="120" length="999" name="RESERVED PRIVATE USE" class="org.jpos.iso.IFA_LLLCHAR"/>
  <isofield id="121" length="999" name="RESERVED PRIVATE USE" class="org.jpos.iso.IFA_LLLCHAR"/>
  <isofield id="122" length="999" name="RESERVED PRIVATE USE" class="org.jpos.iso.IFA_LLLCHAR"/>
  <isofield id="123" length="999" name="RESERVED PRIVATE USE" class="org.jpos.iso.IFA_LLLCHAR"/>
  <isofield id="124" length="999" name="RESERVED PRIVATE USE" class="org.jpos.iso.IFA_LLLCHAR"/>
  <isofield id="125" length="999" name="RESERVED PRIVATE USE" class="org.jpos.iso.IFA_LLLCHAR"/>
  <isofield id="126" length="999" name="RESERVED PRIVATE USE" class="org.jpos.iso.IFA_LLLCHAR"/>
  <isofield id="127" length="999" name="RESERVED PRIVATE USE" class="org.jpos.iso.IFA_LLLCHAR"/>
  <isofield id="128" length="8" name="MAC 2" class="org.jpos.iso.IFA_BINARY"/>
</isopackager>

我的背包按钮配置:

ButtonPack.setonClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                PackISOMessage iso = new PackISOMessage();
                try {
                    String message = iso.buildisOMessage();
                    System.out.printf("Message = %s",message);
                } catch (Exception e) {
                    e.printstacktrace();
                }
            }
        });

对不起,我是编程新手。

解决方法

我通过在实例化打包器之前添加以下代码解决了同样的错误:

System.setProperty("org.xml.sax.driver","org.xmlpull.v1.sax2.Driver");
Field versionShown = org.jpos.util.Logger.class.getDeclaredField("versionShown");
versionShown.setAccessible(true);
versionShown.set(null,true);

然后,您可以实例化打包器:

GenericPackager packager = new GenericPackager(xmlDoc);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?