You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Smooks EDI转XML报错:找不到d03b-mapping的Jar包依赖

问题:Smooks UN/EDIFACT转XML时无法找到映射模型Jar包

运行代码时出现以下错误:

Failed to locate jar file for EDI Mapping Model URN 'org.milyn.edi.unedifact:d03b-mapping:1.7.1.0'. Jar must be available on classpath.

代码片段

public class Main {

    protected static String runSmooksTransform() throws IOException, SAXException, SmooksException {

        // Configure Smooks using a Smooks config...
        //Smooks smooks = new Smooks("smooks-config.xml");

        // Or, configure Smooks programmatically...
        Smooks smooks = new Smooks();
        smooks.setReaderConfig(new UNEdifactReaderConfigurator("urn:org.milyn.edi.unedifact:d03b-mapping:1.7.1.0"));

        try {
            StringWriter writer = new StringWriter();
//I AM GETTING ERROR THIS LINE
            smooks.filterSource(new StreamSource(new FileInputStream("to-xml/apis.txt")), new StreamResult(writer));

            return writer.toString();
        } finally {
            smooks.close();
        }
    }

    public static void main(String[] args) throws IOException, SAXException, SmooksException {
        System.out.println("\n\n==============Message In==============");
        System.out.println(readInputMessage());
        System.out.println("======================================\n");

        String messageOut = Main.runSmooksTransform();

        System.out.println("==============Message Out=============");
        System.out.println(messageOut);
        System.out.println("======================================\n\n");
    }

    private static String readInputMessage() throws IOException {
        return StreamUtils.readStreamAsString(new FileInputStream("to-xml/apis.txt"));
    }
}

pom.xml配置

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.milyn</groupId>
        <artifactId>unedifact-examples</artifactId>
        <version>1.5-SNAPSHOT</version> <!-- base pom version - do not remove this comment -->
    </parent>
    <name>Milyn Smooks Example - UN/EDIFACT - To XML</name>
    <artifactId>milyn-smooks-example-unedifact-to-xml</artifactId>

    <dependencies>

        <!-- Smooks -->
        <dependency>
            <groupId>org.milyn</groupId>
            <artifactId>milyn-smooks-all</artifactId>
            <version>1.4</version>
        </dependency>

        <dependency>
            <groupId>org.milyn</groupId>
            <artifactId>testres</artifactId>
            <version>1.6</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.milyn</groupId>
            <artifactId>milyn-edisax-parser</artifactId>
            <version>1.6</version>
        </dependency>

        <!-- Smooks EDI Cartridge -->
        <dependency>
            <groupId>org.milyn</groupId>
            <artifactId>milyn-smooks-edi</artifactId>
            <version>1.4</version>
            <scope>compile</scope>
        </dependency>

<!--        <dependency>-->
<!--            <groupId>org.milyn</groupId>-->
<!--            <artifactId>milyn-smooks-edi</artifactId>-->
<!--            <version>1.7.1</version>-->
<!--        </dependency>-->

        <dependency>
            <groupId>org.milyn.edi.unedifact</groupId>
            <artifactId>d99b-mapping</artifactId>
            <version>1.4</version>
        </dependency>

        <dependency>
            <groupId>org.milyn.edi.unedifact</groupId>
            <artifactId>d95a-mapping</artifactId>
            <version>1.4</version>
        </dependency>

        <dependency>
            <groupId>org.milyn.edi.unedifact</groupId>
            <artifactId>d95b-mapping</artifactId>
            <version>1.4</version>
        </dependency>

    </dependencies>
    

</project>
解决方案

问题出在依赖配置不匹配,具体修正点如下:

  1. 添加对应版本的d03b映射依赖
    代码中指定的URN是urn:org.milyn.edi.unedifact:d03b-mapping:1.7.1.0,但当前pom.xml中缺少d03b-mapping依赖,且现有映射依赖版本为1.4,与URN中的版本不匹配。需要添加以下依赖:

    <dependency>
        <groupId>org.milyn.edi.unedifact</groupId>
        <artifactId>d03b-mapping</artifactId>
        <version>1.7.1</version>
    </dependency>
    
  2. 升级Smooks核心依赖版本
    当前使用的milyn-smooks-all和milyn-smooks-edi版本为1.4,与映射模型版本1.7.1.0不兼容,需要升级到对应版本:

    <!-- Smooks核心 -->
    <dependency>
        <groupId>org.milyn</groupId>
        <artifactId>milyn-smooks-all</artifactId>
        <version>1.7.1</version>
    </dependency>
    
    <!-- Smooks EDI Cartridge -->
    <dependency>
        <groupId>org.milyn</groupId>
        <artifactId>milyn-smooks-edi</artifactId>
        <version>1.7.1</version>
        <scope>compile</scope>
    </dependency>
    
  3. 清理冲突依赖
    移除pom.xml中注释掉的旧版本EDI依赖,以及版本不匹配的milyn-edisax-parser(1.6版本),确保所有Smooks相关依赖版本一致,避免版本冲突。

修改完成后,执行mvn clean install更新依赖,重新运行代码即可解决找不到Jar包的问题。

内容的提问来源于stack exchange,提问作者iwritecomeinmymind

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 19:12:07