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>
解决方案
问题出在依赖配置不匹配,具体修正点如下:
添加对应版本的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>升级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>清理冲突依赖
移除pom.xml中注释掉的旧版本EDI依赖,以及版本不匹配的milyn-edisax-parser(1.6版本),确保所有Smooks相关依赖版本一致,避免版本冲突。
修改完成后,执行mvn clean install更新依赖,重新运行代码即可解决找不到Jar包的问题。
内容的提问来源于stack exchange,提问作者iwritecomeinmymind
相关产品推荐
相关产品推荐

