我對Java的相對較新的& maven,所以爲了瞭解我的方式,我決定做一個項目作爲學習的一種手段。Java - 獲取jar依賴關係權
我拿起一個很常見的堆棧:
- 的Java 1.6
- 休眠(帶註釋)
- 春季(帶註釋)
- 的JUnit 4
- Tomcat的
- 的Oracle XE/In-mem hsqldb
迄今爲止,我遇到的最大問題之一是獲得jar版本的正確組合以獲得穩定的環境。兩個月後,我的問題是still fighting with。
很多時候我得到noSuchMethod或classNotFound異常拋出,並且事實證明Spring模塊A x.x.x與Hibernate模塊B y.y.y不兼容。甚至,正如通常一樣,彈簧模塊A xxx與彈簧模塊B不兼容yyy
我期望從乾淨的版本開始,版本依賴應該是最小的 - 只需抓住最新版本,一切都應該工作。但事實並非如此。
我預計使用maven會簡化這個過程,毫無疑問它已經。
但它絕對不是無痛。我曾經想過,如果模塊A需要特定版本的模塊B,它會在該行的某處執行,並且certinaly會提供更有意義的消息,只是「noSuchMethod」。
此外,似乎我發現這些問題的唯一方法是嘗試新方法調用,獲取可怕的noSuchMethod錯誤,並開始使用Google搜索。
我在這裏錯過了一些讓自己變得更加困難的事情嗎?
作爲參考,這裏是我的pom的依賴部分...如果您發現任何可怕的非標準,請讓我知道!
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.5.6</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.5.6</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.4</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>ojdbc</groupId>
<artifactId>ojdbc</artifactId>
<version>14</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>1.4</version>
</dependency>
<dependency><!-- java bytecode processor -->
<groupId>javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.8.0.GA</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.2.1</version>
</dependency>
<dependency>
<groupId>hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>1.8.0.7</version>
</dependency>
<dependency>
<groupId>org.dbunit</groupId>
<artifactId>dbunit</artifactId>
<version>2.4.4</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<version>2.5.6</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>2.5.6</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>2.5.6</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-annotations</artifactId>
<version>3.4.0.GA</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-commons-annotations</artifactId>
<version>3.3.0.ga</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>3.3.1.GA</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>3.1.0.GA</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>3.4.0.GA</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.3</version>
</dependency>
</dependencies>
感謝
馬蒂
你能提供一些你得到的錯誤的例子嗎? – 2009-05-19 12:40:27