Получите «ошибку при открытии zip-файла» в новых Smooks()

#java #smooks

Вопрос:

Я получаю ошибку при попытке создать новый экземпляр Smooks:

 Smooks smooks = new Smooks("conf/smooks-config.xml");
 

в smooks-config.xml:

 <?xml version="1.0"?>
<smooks-resource-list xmlns="https://www.smooks.org/xsd/smooks-2.0.xsd"
                      xmlns:edifact="https://www.smooks.org/xsd/smooks/edifact-2.0.xsd">

    <edifact:parser schemaURI="/d03b/EDIFACT-Messages.dfdl.xsd"/>
    <edifact:unparser schemaURI="/d03b/EDIFACT-Messages.dfdl.xsd" unparseOnElement="/Interchange"/>
</smooks-resource-list>
 

Почему? Что я делаю не так? Я использую Smooks-2.0.0-M3

Вот трассировка стека:

 org.smooks.api.SmooksException: error in opening zip file
    at org.smooks.engine.DefaultApplicationContext.<init>(DefaultApplicationContext.java:93)
    at org.smooks.engine.DefaultApplicationContextBuilder.build(DefaultApplicationContextBuilder.java:90)
    at org.smooks.Smooks.<init>(Smooks.java:152)
    at org.smooks.Smooks.<init>(Smooks.java:182)
    at de.edi.ProcessorSmooksInit.process(ProcessorSmooksInit.java:23)
    at org.apache.camel.processor.DelegateSyncProcessor.process(DelegateSyncProcessor.java:63)
    at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77)
    at org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:163)
    at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:468)
    at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:109)
    at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:344)
    at org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:68)
    at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:172)
    at org.apache.camel.processor.Pipeline.process(Pipeline.java:121)
    at org.apache.camel.processor.Pipeline.process(Pipeline.java:83)
    at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:468)
    at org.apache.camel.spring.spi.TransactionErrorHandler.processByErrorHandler(TransactionErrorHandler.java:220)
    at org.apache.camel.spring.spi.TransactionErrorHandler.process(TransactionErrorHandler.java:101)
    at org.apache.camel.spring.spi.TransactionErrorHandler.process(TransactionErrorHandler.java:114)
    at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77)
    at org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:163)
    at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:468)
    at org.apache.camel.spring.spi.TransactionErrorHandler.processByErrorHandler(TransactionErrorHandler.java:220)
    at org.apache.camel.spring.spi.TransactionErrorHandler$1.doInTransactionWithoutResult(TransactionErrorHandler.java:183)
    at org.springframework.transaction.support.TransactionCallbackWithoutResult.doInTransaction(TransactionCallbackWithoutResult.java:34)
    at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:133)
    at org.apache.camel.spring.spi.TransactionErrorHandler.doInTransactionTemplate(TransactionErrorHandler.java:176)
    at org.apache.camel.spring.spi.TransactionErrorHandler.processInTransaction(TransactionErrorHandler.java:136)
    at org.apache.camel.spring.spi.TransactionErrorHandler.process(TransactionErrorHandler.java:105)
    at org.apache.camel.spring.spi.TransactionErrorHandler.process(TransactionErrorHandler.java:114)
    at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:197)
    at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:197)
    at org.apache.camel.component.file.GenericFileConsumer.processExchange(GenericFileConsumer.java:454)
    at org.apache.camel.component.file.GenericFileConsumer.processBatch(GenericFileConsumer.java:226)
    at org.apache.camel.component.file.GenericFileConsumer.poll(GenericFileConsumer.java:190)
    at org.apache.camel.impl.ScheduledPollConsumer.doRun(ScheduledPollConsumer.java:175)
    at org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:102)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.util.zip.ZipException: error in opening zip file
    at java.util.zip.ZipFile.open(Native Method)
    at java.util.zip.ZipFile.<init>(ZipFile.java:225)
    at java.util.zip.ZipFile.<init>(ZipFile.java:155)
    at java.util.zip.ZipFile.<init>(ZipFile.java:169)
    at org.smooks.classpath.Scanner.handleArchive(Scanner.java:121)
    at org.smooks.classpath.Scanner.scanClasspath(Scanner.java:104)
    at org.smooks.engine.DefaultApplicationContext.<init>(DefaultApplicationContext.java:91)
    ... 43 more
 

Но я не использую Zip-файл ни на каких деталях. Я использую smooks в процессоре Apache Camel, но не думаю, что это окажет какое-либо влияние.

Комментарии:

1. Опубликуйте трассировку стека ошибок.

2. Я редактирую свой вопрос

Ответ №1:

Smooks пытается загрузить классы из банок в пределах своего пути к классам. Он не может распаковать банку, что приводит к ошибке, которую вы видите. Возможно, архив поврежден? К сожалению, в сообщении об ошибке не указано, какой архив, но вы можете легко узнать, войдя в код.

Комментарии:

1. Я загружаюсь с Maven Repro. Я отлаживаю код. Спасибо

2. Я включил вывод отладки из org.smooks.classpath. Сканер и обнаружил ошибку. Сканер путей к классам хочет распаковать текстовый файл *.pom. Я открываю выпуск на GitHub: github.com/smooks/smooks/issues/480