我在Eclipse Galileo中有一个Spring MVC项目。
它的依赖性在pom.xml中指定 。
当我键入mvn eclipse:eclipse
时,在Eclipse构建路径中将依赖关系指定为作为链接。
但是当我尝试在服务器上运行这个应用程序时(在Eclipse中,运行 - >在服务器上运行),类路径中不存在依赖关系,这就是我得到classDefNotFound错误的原因。
有没有办法解决这个问题?
非常感谢!
答案 0 :(得分:3)
如何使用Maven将依赖项复制到Spring项目的WEB_INF / lib文件夹中?
没有必要这样做。这只是一个可怕的解决方法。解决问题的根本原因。
我在Eclipse Galileo中有一个Spring MVC项目。它的依赖项在pom.xml中指定。当我键入mvn eclipse:eclipse时,依赖项被指定为Eclipse构建路径中的链接。
很奇怪,那不是我得到的。你能展示.classpath
的内容吗? Maven Eclipse插件生成的典型.classpath
如下所示:
<classpath>
<classpathentry kind="src" path="src/test/java" output="target/test-classes" including="**/*.java"/>
<classpathentry kind="src" path="src/main/java" including="**/*.java"/>
<classpathentry kind="output" path="target/classes"/>
<classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar" sourcepath="M2_REPO/junit/junit/3.8.1/junit-3.8.1-sources.jar"/>
...
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
</classpath>
我在这里看不到任何“链接”。您的环境中是否定义了M2_REPO
?
但是当我尝试在服务器上运行这个应用程序时(在Eclipse中,运行 - &gt;在服务器上运行),类路径中不存在依赖关系,这就是我得到classDefNotFound错误的原因
我认为别的事情是错的。但是将依赖项复制到WEB-INF/lib
当然不是解决问题的正确方法。
答案 1 :(得分:1)
我建议你看看M2Eclipse。它提供了一个带有项目maven依赖项的类路径容器,并且通常可以更好地与Eclipse集成。
其主要特点是:
maven-eclipse-plugin is scheduled to be deprecated and later on retired因此,研究将在不久的将来维持的事情是明智的。
答案 2 :(得分:1)
我在IRAD上的maven项目遇到了类似的问题。右键单击War项目,选择属性。在“Java EE Module Dependencies”下,选中“Maven Dependencies”旁边的复选框。这应该在部署期间将lib文件夹复制到服务器上的目标位置。
我正在使用IRAD,因此不确定这是否特定于IRAD或者是否可用于Eclipse。
答案 3 :(得分:0)
由于您似乎有一个maven项目,您可以使用Eclipse Maven插件(M2Eclipse)并将项目导入为Maven项目
尽管如此,上述步骤也应该起作用。
答案 4 :(得分:0)
您是否将MAVEN_REPO
类路径变量添加到Eclipse?如果没有,您可以使用maven插件执行此操作:
mvn -Dworkspace=/path/to/your/workspace eclipse:configure-workspace
有关详细信息,请查看maven-eclipse-plugin的Usage页面!