2011-02-11 36 views
13

我曾與Maven(打包成JAR)的使用內置彈簧項目(依賴被複制到一個單獨的目錄,並添加到類路徑)Maven的春天 - 找不到的聲明元素「豆」

我想運行它爲Java的罐子

的問題是,當我運行它,我得到:

產生的原因:org.xml.sax.SAXParseException:CVC-elt.1:找不到元素的聲明 '豆'。

這是因爲spring.schemas和spring.handlers位於幾個罐子,即:彈簧豆類等

有什麼辦法來解決這個問題,假設我不想用遮蔭插件來解壓縮所有依賴項並連接spring.schemas和spring.handlers的內容?

我也想避免在我的項目中保存xsd文件,並更改schemaLocation指向我的位置。

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:camel="http://camel.apache.org/schema/spring" 
    xsi:schemaLocation=" 
     http://www.springframework.org/schema/beans http://http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
     http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd"> 

    <camel:camelContext> 
     <camel:routeBuilder ref="fakeRouteBuilder"/> 
    </camel:camelContext> 

    <bean id="fakeRouteBuilder" class="<className>" /> 


</beans> 
+0

你可以粘貼其中一個配置彈簧配置文件嗎?我認爲這個問題可能存在 – Augusto 2011-02-11 17:22:57

+0

` \t <駱駝:camelContext> \t \t <駱駝:routeBuilder REF =」 fakeRouteBuilder「/> \t \t的 ` – JJT 2011-02-11 18:07:24

+0

檢查`XSI:schemaLocation`屬性。這似乎是不正確的,但這也可能是由評論中URL的鏈接引起的。事實上,如果你通過添加你以前的評論作爲代碼塊來編輯你的問題會更好,(=選擇代碼並點擊`{}`按鈕使其顯示爲代碼塊) – jasso 2011-02-11 20:57:43

回答

0

在您的XSD聲明中有太多http://。試試這個:

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:camel="http://camel.apache.org/schema/spring" 
    xsi:schemaLocation=" 
     http://www.springframework.org/schema/beans  
     http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
     http://camel.apache.org/schema/spring 
     http://camel.apache.org/schema/spring/camel-spring.xsd"> 

(你是http://http://www.springframework.org/schema/beans/spring-beans-2.5.xsd

+0

我的錯誤,我複製了這個事故 - 在我的上下文中沒有「http:// http://」。我注意到,當沒有互聯網連接時發生錯誤。當我改變包裝戰爭問題消失... – JJT 2011-02-11 22:05:26

24

我知道2分的情況下,你可以有這個問題

  • 如果沒有互聯網連接(代理服務器後面做,對實例)。在這種情況下,請下載XSD,將其複製到XML旁邊,並將架構位置更改爲xsi:schemaLocation=" http://www.springframework.org/schema/beans spring-beans-2.5.xsd ..."
  • 如果您有互聯網連接/仍然存在問題,那是因爲您爲XSD使用了不同版本的Spring,罐。
+1

只是有一個本地的,無網絡的網絡上測試這個問題。第一點是現貨。 – jdmichal 2011-06-24 03:34:11

+0

剛剛面臨同樣的問題,用第一個解決方案修復!謝謝 – Dough 2012-11-29 08:03:39

8

我認爲XSD將成爲彈簧罐的一部分,所以不應該成爲問題。

0

當我的XSD url指向與jar文件中定義的XSD位置不同的位置時,出現了該錯誤。例如,spring-beans-3.0.xsd而不是spring-beans-2.5.xsd反之亦然。

2

由於我在代理之後,遇到同樣的問題。我的Tomcat 6下運行的Spring MVC的應用剛剛添加的以下行我catalina.bat中文件的biginning和解決我的問題:

set JAVA_OPTS=%JAVA_OPTS% -Dhttp.proxyHost=XXXX -Dhttp.proxyPort=YYYYY -Dhttp.proxyUser=ZZZZ -Dhttp.proxyPassword=XXXXXX 
0

您也可以從here使用的建議來解決這個問題

0

我有完全相同的問題,我認爲它是由2點主要的原因造成的:

  • 對於spring-security依賴項和XSD文件引用,您有不同的版本。
  • 此外,它可能會發生,如果你使用不同版本的彈簧通用框架和彈簧安全。
1

我能夠從我的遠程資源的緩存,窗口>首選項>常規>網絡連接>緩存由Maven的組裝插件生成