2015-07-21 92 views
1

我工作與春季和春季整合。我需要獲得rss流並寫入(現在是文件)。這是我的春天應用程序配置:春季飼料整合

<int:channel id="rssFeedChannel"> 
     <int:queue capacity="40"/> 
    </int:channel> 

    <file:outbound-channel-adapter id="file" mode="APPEND" charset="UTF-8" directory="/tmp/si" filename-generator-expression="'SpringBlog'"/> 

    <feed:inbound-channel-adapter id="news" channel="rssFeedChannel" url="https://spring.io/blog.atom"> 
     <int:poller fixed-rate="5000"/> 
    </feed:inbound-channel-adapter> 

    <int:transformer input-channel="rssFeedChannel" expression="payload.title + ' @ ' + payload.link + '#{systemProperties['line.separator']}'" output-channel="file"/> 

我運行應用程序,並得到例外:

SEVERE: java.lang.ExceptionInInitializerError 
    at com.rometools.rome.io.WireFeedInput.createSAXBuilder(WireFeedInput.java:306)... 

Caused by: java.lang.UnsupportedOperationException: This parser does not support specification "null" version "null" 
at javax.xml.parsers.SAXParserFactory.setSchema(SAXParserFactory.java:419) 
at org.jdom2.input.sax.XMLReaders.<init>(XMLReaders.java:122) 
at org.jdom2.input.sax.XMLReaders.<clinit>(XMLReaders.java:95) 
... 32 more 


Jul 22, 2015 1:54:08 AM org.springframework.integration.handler.LoggingHandler handleMessageInternal 
SEVERE: java.lang.NoClassDefFoundError: Could not initialize class org.jdom2.input.sax.XMLReaders 

我的pom.xml:

<properties> 
     <spring.version>4.1.1.RELEASE</spring.version> 
     <spring.integration.version>4.1.6.RELEASE</spring.integration.version> 
     <hibernate.version>4.3.7.Final</hibernate.version> 
     <junit-version>4.11</junit-version> 
     <servlet-api-version>3.1.0</servlet-api-version> 
     <jsp-version>2.1</jsp-version> 
     <jstl-version>1.2</jstl-version> 
    </properties> 

    <dependencies> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-core</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-web</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-webmvc</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-tx</artifactId> 
      <version>${spring.version}</version> 
      <type>jar</type> 
      <scope>compile</scope> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-test</artifactId> 
      <version>${spring.version}</version> 
      <scope>test</scope> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-orm</artifactId> 
      <version>${spring.version}</version> 
      <type>jar</type> 
      <scope>compile</scope> 
     </dependency> 

     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>servlet-api</artifactId> 
      <version>2.5</version> 
     </dependency> 

     <dependency> 
      <groupId>javax.servlet.jsp</groupId> 
      <artifactId>jsp-api</artifactId> 
      <version>2.1</version> 
      <scope>provided</scope> 
     </dependency> 

     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-core</artifactId> 
      <version>${hibernate.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-c3p0</artifactId> 
      <version>${hibernate.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-validator</artifactId> 
      <version>5.1.3.Final</version> 
     </dependency> 

     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.11</version> 
      <scope>test</scope> 
     </dependency> 

     <dependency> 
      <groupId>javax.persistence</groupId> 
      <artifactId>persistence-api</artifactId> 
      <version>1.0.2</version> 
      <scope>provided</scope> 
     </dependency> 

     <dependency> 
      <groupId>org.xerial</groupId> 
      <artifactId>sqlite-jdbc</artifactId> 
      <version>3.7.2</version> 
     </dependency> 

     <dependency> 
      <groupId>com.fasterxml.jackson.core</groupId> 
      <artifactId>jackson-core</artifactId> 
      <version>2.4.1</version> 
     </dependency> 
     <dependency> 
      <groupId>com.fasterxml.jackson.core</groupId> 
      <artifactId>jackson-databind</artifactId> 
      <version>2.4.1.1</version> 
     </dependency> 

     <dependency> 
      <groupId>rome</groupId> 
      <artifactId>rome</artifactId> 
      <version>1.0</version> 
     </dependency> 
     <dependency> 
      <groupId>rome</groupId> 
      <artifactId>rome-fetcher</artifactId> 
      <version>1.0</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.integration</groupId> 
      <artifactId>spring-integration-core</artifactId> 
      <version>${spring.integration.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.integration</groupId> 
      <artifactId>spring-integration-feed</artifactId> 
      <version>${spring.integration.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.integration</groupId> 
      <artifactId>spring-integration-file</artifactId> 
      <version>${spring.integration.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.jdom</groupId> 
      <artifactId>jdom2</artifactId> 
      <version>2.0.6</version> 
     </dependency> 

    </dependencies> 

完整堆棧跟蹤:

Jul 22, 2015 11:48:57 PM org.springframework.integration.handler.LoggingHandler handleMessageInternal 
SEVERE: java.lang.NoClassDefFoundError: Could not initialize class org.jdom2.input.sax.XMLReaders 
    at com.rometools.rome.io.WireFeedInput.createSAXBuilder(WireFeedInput.java:306) 
    at com.rometools.rome.io.WireFeedInput.build(WireFeedInput.java:207) 
    at com.rometools.rome.io.SyndFeedInput.build(SyndFeedInput.java:133) 
    at com.rometools.fetcher.impl.HttpURLFeedFetcher.readSyndFeedFromStream(HttpURLFeedFetcher.java:300) 
    at com.rometools.fetcher.impl.HttpURLFeedFetcher.getSyndFeedFromStream(HttpURLFeedFetcher.java:306) 
    at com.rometools.fetcher.impl.HttpURLFeedFetcher.resetFeedInfo(HttpURLFeedFetcher.java:217) 
    at com.rometools.fetcher.impl.HttpURLFeedFetcher.retrieveAndCacheFeed(HttpURLFeedFetcher.java:188) 
    at com.rometools.fetcher.impl.HttpURLFeedFetcher.retrieveFeed(HttpURLFeedFetcher.java:140) 
    at com.rometools.fetcher.impl.HttpURLFeedFetcher.retrieveFeed(HttpURLFeedFetcher.java:99) 
    at org.springframework.integration.feed.inbound.FeedEntryMessageSource.getFeed(FeedEntryMessageSource.java:204) 
    at org.springframework.integration.feed.inbound.FeedEntryMessageSource.populateEntryList(FeedEntryMessageSource.java:182) 
    at org.springframework.integration.feed.inbound.FeedEntryMessageSource.doReceive(FeedEntryMessageSource.java:157) 
    at org.springframework.integration.feed.inbound.FeedEntryMessageSource.receive(FeedEntryMessageSource.java:122) 
    at org.springframework.integration.endpoint.SourcePollingChannelAdapter.receiveMessage(SourcePollingChannelAdapter.java:144) 
    at org.springframework.integration.endpoint.AbstractPollingEndpoint.doPoll(AbstractPollingEndpoint.java:192) 
    at org.springframework.integration.endpoint.AbstractPollingEndpoint.access$000(AbstractPollingEndpoint.java:55) 
    at org.springframework.integration.endpoint.AbstractPollingEndpoint$1.call(AbstractPollingEndpoint.java:149) 
    at org.springframework.integration.endpoint.AbstractPollingEndpoint$1.call(AbstractPollingEndpoint.java:146) 
    at org.springframework.integration.endpoint.AbstractPollingEndpoint$Poller$1.run(AbstractPollingEndpoint.java:298) 
    at org.springframework.integration.util.ErrorHandlingTaskExecutor$1.run(ErrorHandlingTaskExecutor.java:52) 
    at org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:50) 
    at org.springframework.integration.util.ErrorHandlingTaskExecutor.execute(ErrorHandlingTaskExecutor.java:49) 
    at org.springframework.integration.endpoint.AbstractPollingEndpoint$Poller.run(AbstractPollingEndpoint.java:292) 
    at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) 
    at org.springframework.scheduling.concurrent.ReschedulingRunnable.run(ReschedulingRunnable.java:81) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:262) 
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178) 
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:745) 

/usr/share/tomcat7/bin/catalina.sh stop 
Jul 22, 2015 11:49:02 PM org.springframework.integration.handler.LoggingHandler handleMessageInternal 
SEVERE: java.lang.NoClassDefFoundError: Could not initialize class org.jdom2.input.sax.XMLReaders 
    at com.rometools.rome.io.WireFeedInput.createSAXBuilder(WireFeedInput.java:306) 
    at com.rometools.rome.io.WireFeedInput.build(WireFeedInput.java:207) 
    at com.rometools.rome.io.SyndFeedInput.build(SyndFeedInput.java:133) 
    at com.rometools.fetcher.impl.HttpURLFeedFetcher.readSyndFeedFromStream(HttpURLFeedFetcher.java:300) 
    at com.rometools.fetcher.impl.HttpURLFeedFetcher.getSyndFeedFromStream(HttpURLFeedFetcher.java:306) 
    at com.rometools.fetcher.impl.HttpURLFeedFetcher.resetFeedInfo(HttpURLFeedFetcher.java:217) 
    at com.rometools.fetcher.impl.HttpURLFeedFetcher.retrieveAndCacheFeed(HttpURLFeedFetcher.java:188) 
    at com.rometools.fetcher.impl.HttpURLFeedFetcher.retrieveFeed(HttpURLFeedFetcher.java:140) 
    at com.rometools.fetcher.impl.HttpURLFeedFetcher.retrieveFeed(HttpURLFeedFetcher.java:99) 
    at org.springframework.integration.feed.inbound.FeedEntryMessageSource.getFeed(FeedEntryMessageSource.java:204) 
    at org.springframework.integration.feed.inbound.FeedEntryMessageSource.populateEntryList(FeedEntryMessageSource.java:182) 
    at org.springframework.integration.feed.inbound.FeedEntryMessageSource.doReceive(FeedEntryMessageSource.java:157) 
    at org.springframework.integration.feed.inbound.FeedEntryMessageSource.receive(FeedEntryMessageSource.java:122) 
    at org.springframework.integration.endpoint.SourcePollingChannelAdapter.receiveMessage(SourcePollingChannelAdapter.java:144) 
    at org.springframework.integration.endpoint.AbstractPollingEndpoint.doPoll(AbstractPollingEndpoint.java:192) 
    at org.springframework.integration.endpoint.AbstractPollingEndpoint.access$000(AbstractPollingEndpoint.java:55) 
    at org.springframework.integration.endpoint.AbstractPollingEndpoint$1.call(AbstractPollingEndpoint.java:149) 
    at org.springframework.integration.endpoint.AbstractPollingEndpoint$1.call(AbstractPollingEndpoint.java:146) 
    at org.springframework.integration.endpoint.AbstractPollingEndpoint$Poller$1.run(AbstractPollingEndpoint.java:298) 
    at org.springframework.integration.util.ErrorHandlingTaskExecutor$1.run(ErrorHandlingTaskExecutor.java:52) 
    at org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:50) 
    at org.springframework.integration.util.ErrorHandlingTaskExecutor.execute(ErrorHandlingTaskExecutor.java:49) 
    at org.springframework.integration.endpoint.AbstractPollingEndpoint$Poller.run(AbstractPollingEndpoint.java:292) 
    at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) 
    at org.springframework.scheduling.concurrent.ReschedulingRunnable.run(ReschedulingRunnable.java:81) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:262) 
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178) 
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:745) 

這是怎麼解決的?

回答

1

根據你的日誌:

java.lang.NoClassDefFoundError: Could not initialize class org.jdom2.input.sax.XMLReaders

它看起來像你不使用你的項目的任何相關性管理工具。因此,您在目標類路徑中丟失了jdom jar。

我告訴大家,是因爲:

\--- com.rometools:rome-fetcher:1.5.0 
    +--- com.rometools:rome:1.5.0 
    | +--- com.rometools:rome-utils:1.5.0 
    | +--- org.jdom:jdom:2.0.2 
    | \--- org.slf4j:slf4j-api:1.7.7 -> 1.7.10 

至於依賴樹spring-integration-feed

希望這張照片能幫助你弄清楚你的問題。

+0

我添加應用程序pom.xml,請看。 – Wolkodav

+0

看起來不錯。但那是您項目的POM。你的Tomcat有所有這些代表嗎?還是你將它們包含到你的WEB-INF/lib中?正如我猜「SEVERE」不是標準的日誌級別,所以某些應用服務器會在運行時覆蓋我們的Apache commons。 –

+0

他們是一樣的 – Wolkodav