2016-09-13 12 views
1

EDIメッセージを読み込み、それをJavaオブジェクトに変換しようとしていますが、以下の例外があります。EDIストリームからJavaオブジェクトへの変換での例外

スレッド "main"の例外org.milyn.SmooksException: ソースをフィルタリングできませんでした。 org.milyn.Smooks._filterで org.milyn.delivery.sax.SmooksSAXFilter.doFilter(SmooksSAXFilter.java:64)で org.milyn.delivery.sax.SmooksSAXFilter.doFilter(SmooksSAXFilter.java:97) で(Smooks.java:526)at org.milyn.Smooks.filterSource(Smooks.java:482)at org.milyn.Smooks.filterSource(Smooks.java:456)at org.milyn.edi.unedifact.d97a com.ibm.gpohub.edi.common.SmooksSample.mainで.D97AInterchangeFactory.fromUNEdifact org.milyn.edi.unedifact.d97a.D97AInterchangeFactory.fromUNEdifact(D97AInterchangeFactory.java:40)で(D97AInterchangeFactory.java:58) ( SmooksSample.java:18) 原因:org.milyn.edisax.EDIParseException:EDIメッセージ処理 は失敗しました[ORDRSP] [D:97A:UN]。セグメント[FTX]、フィールド4(TEXT_LITERAL)、 コンポーネント1(Free_text _-_-1)に値が含まれると予想されます。現在 (セグメント番号6) org.milyn.edisax.EDIParser.mapComponent(EDIParser.java:687) org.milyn.edisax.EDIParser.mapField(EDIParser.java:636) org.milyn.edisax .EDIParser.mapFields(EDIParser.java:606)at org.milyn.edisax.EDIParser.mapSegment(EDIParser.java:564) org.milyn.edisax.EDIParser.mapSegments(EDIParser.java:535)at org .milyn.edisax.EDIParser.mapSegments(EDIParser.java:453)at org.milyn.edisax.EDIParser.parse(EDIParser.java:428) org.milyn.edisax.EDIParser.parse(EDIParser.java:410) )at org.milyn.edisax.unedifact.handlers.UNHHandler.process(UNHHandler.java:97) at org.milyn.edisax.unedif org.milyn.edisax.unedifact.UNEdifactInterchangeParserでact.handlers.UNGHandler.process(UNGHandler.java:58) でorg.milyn.edisax.unedifact.handlers.UNBHandler.process(UNBHandler.java:75) 。構文解析(UNEdifactInterchangeParser.java:113) at org.milyn.smooks.edi.unedifact.UNEdifactReader.parse(UNEdifactReader.java:75) at org.milyn.delivery.sax.SAXParser.parse(SAXParser.java:76) ) でorg.milyn.delivery.sax.SmooksSAXFilter.doFilter(SmooksSAXFilter.java:86) ... 7もっと

ここでは、コードスニペットです:

D97AInterchangeFactory d97InterChangeFactory = (D97AInterchangeFactory)SmooksFactoryImpl.D97A_FACTORY.getInstance(); 
      InputStream ediSource = new FileInputStream("C:\\EDIFACT_MSG.txt"); 
      UNEdifactInterchange interchange = d97InterChangeFactory.fromUNEdifact(ediSource); 
     if(interchange instanceof UNEdifactInterchange41){ 
      List<UNEdifactMessage41> messages = ((UNEdifactInterchange41) interchange).getMessages(); 
      for(UNEdifactMessage41 msg:messages){ 
       System.out.println(msg.toString()); 
      } 
     } 

EDIMessage:

UNA:+。? 012 + + + + + + + D:97A UNB + UNOC:3 + 662424795TEST:16 + IBMEDIID:ZZ + 160330:1416 + IG-62779496 UNG + ORDRSP + 662424795テスト:16 + IBMEDIID:ZZ + 160330:1420 + FG-34160863 + UN + D:97A UNH + 80534414 + ORDRSP:D:97A:UN BGM + 231 + 20160330 + 4 DTM + 69:20150501150000UTC?+12:304 FTX + SSR +++:空白FTX + AAR ++ ST FTX + COI +++ CLW FTX + PRI ++ 8 FTX + DEL ++ 06 FTX + CUR +++すべてのアイテムを1つにパックする ボックスFTX + DIN +++出荷前に顧客に電話 FTX + PRD +++ 1:1:PC01 FTX + AAP RFF + SZ:ND RFF + ABO:Y RFF + CO:IBM1234501 DTM + 4:20150501010101UTC?+12:304 RFF + ACW:CASE_12345 RFF + ADG:Y RFF + ACH:Y RFF + ZOD:order_desk01 RFF + ZSD:IBM RFF + ZPD:30006672 RFF + ZCS:ブランク RFF + ZZZ NAD + SE + 300IBM NAD + BY + US00000001 ++ Coca Cola:CA + 9/F:841 WEBSTER ST:ストレス3:空白+ SAN FRANCISCO ++ 94117 + US CTA + PD +:Jordan Surzyn [email protected]: EM COM + 6508624654:TE NAD + OY + US00000001 ++ IBM フィールドサービス:CA + 9/F:900 WEBSTER ST:ストレス3:空白+ SAN FRANCISCO ++ 94117 + US CTA + CR +:Will Smith COM + Will @ ibm.com:EM COM + 6508624654:TE LIN + 10 PIA + 5 + 04X6076 IMD + F ++ :::キーボードNetVista キーボード(USB)QTY + 21:1:EA DTM + 69:20160610120000UTC?+12:304 0135 RFF + ZSB:01 RFF + ZRO:Y RFF + ZOR: からFTX +キーボードは良い条件 RFF + ZST:SOFT UNS + S UNT + 50 + 80534414 UNE + 1 + FG-34160863 UNZ + 1 + IG-62779496

誰もがどこ私が間違ってやっている、私を導くことはできますか?ありがとうございます。

答えて

0

不適切なEDIFACTメッセージ形式のためでした。以下に示すように、適切なEDIFACTメッセージが得られたら解決します。似たような問題に直面している人なら誰でもこれを助けるかもしれない--thanks

UNA:+。? ' UNB + UNOC:3 + IBM:ZZZ + 662424795TEST:16 + 160330:1416 + 00000016086706 ++++ 1' UNG + ORDRSP + IBM:ZZZ + 662424795TEST:16 + 160330:1420 + 00000000160867 + UN + D: UNA + BGM + 231 + 20160330 + 4 ' DTM + 69:20160501150000UTC?+12:304' FTX + AAR ++ ER 'FTX + SSR +++ N: AM ' FTX + COI +++ CLW' FTX + PRI ++ 8 'FTX + DEL ++ 04' FTX + CUR +++すべてのアイテムを にまとめてください 'FTX + DIN +++ RFF + PC:20AMS67000 ' FTX + PRD +++ IBMDECK001 :: PC01' FTX + AAP +++ 900 'RFF + PC:20AMS67000' RFF + SE:PC01K33E 'RFF + SZ:ND' RFF + ABO:N ' RFF + CO:IBM1234501 ' RFF + ACW:IBMCASE12301' DTM + 4:20150501000000UTC?+12:304 ' NAD + SE + 30006672 ++ 3100001' NAD + BY + US00000001 ++ CA:NECパーソナル コンピュータズ+ 9/F:841 WE BSTER ST:ストレス3 + SAN FRANCISCO ++ 941171717 + US 'CTA + PD +:Jordan Surzyn' [email protected]:EM ' COM + 6508624654:TE NAD + OY + US00000001 ++ CA:NEC Personal Computers、 Ltd. + 9/F:841 WEBSTER ST:ストレス3 + SAN FRANCISCO ++ 941171717 + US ' CTA + CR +:Jordan Surzyn' [email protected]:EM 'COM + 6508624654:TE' LIN + 20 +++ 1:10 'PIA + 5 + 04X6076' IMD + F ++ :::キーボードNetVistaキーボード (USB) 'QTY + 21:1:EA' DTM + 69:20160610120000UTC?+12:304 'FTX + LIN +++ ZSP1 ' 条件' RFF + SE:Y 'NAD + OY + 01 + LIN +++ ZSP1' FTX + AAP +++ 900 Accpet 'FTX + OSI +++ INW' FTX + BSC+++キーボードSOFT 'UNS + S' UNT + 41 + 1 ' UNE + 1 + 00000000160867' UNZ + 1 + 00000016086706 '

+1

はい、EDIFACTのデフォルトセグメントターミネータは、ここではUNAセグメントで指定された '文字です。 – MikeRalphson

関連する問題