【发布时间】:2010-10-27 07:32:20
【问题描述】:
我对 Java 和 maven 比较陌生,因此为了了解我的方法,我决定做一个项目作为学习的手段。
我选择了一个很常见的堆栈:
- Java 1.6
- 休眠(带注释)
- Spring(带注释)
- JUnit 4
- 雄猫
- Oracle XE / In-mem hsqldb
到目前为止,我遇到的最大问题之一是正确组合 jar 版本以获得稳定的环境。两个多月后,我是still fighting with,这是一个问题。
我经常抛出 noSuchMethod 或 classNotFound 异常,结果证明 Spring 模块 A x.x.x 与 Hibernate 模块 B y.y.y 不兼容。甚至,通常情况下,spring 模块 A x.x.x 与 spring 模块 B y.y.y 不兼容
我希望从头开始,版本依赖性应该是最小的 - 只需获取最新版本,一切都应该工作......但事实并非如此。
我预计使用 maven 会简化这个过程,毫无疑问它确实做到了。
但这肯定远非无痛。我曾想过,如果模块 A 需要模块 B 的特定版本,那么它会在某个地方强制执行,并且肯定会提供更有意义的消息,而不仅仅是“noSuchMethod”。
此外,我发现这些问题的唯一方法似乎是尝试一个新的方法调用,得到可怕的 noSuchMethod 错误,然后开始谷歌搜索。
我是否在此过程中错过了一些让我自己变得比需要的更困难的事情?
作为参考,这是我的 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>
谢谢
马蒂
【问题讨论】:
-
你能提供一些你遇到的错误的例子吗?
标签: java hibernate spring maven-2 jar