当我尝试使用maven定义的依赖项运行我的应用程序时,我收到了ClassNotFoundException和NoClassDefFoundError异常。
我使用以下声明将我对相关jar的maven依赖项添加到我的pom.xml文件中:
<dependency>
<groupId>upload</groupId>
<artifactId>upload</artifactId>
<scope>system</scope>
<version>1.0</version>
<systemPath>${basedir}\lib\upload.jar</systemPath>
</dependency>
这将相关的JAR文件添加到Eclipse中的Maven Dependencies文件夹中。我可以在代码中访问类,但是一旦运行应用程序,我就会得到提到的异常。
在Maven依赖项下的Java构建路径中引用了jar:
我在运行项目时遇到异常
java.lang.NoClassDefFoundError:
答案 0 :(得分:0)
这是因为您将范围设置为system
。当你这样做时,Maven假设你在运行它时自己正在关注jar在类路径上。
- system 此范围与提供的类似,只是您必须提供明确包含它的JAR。工件始终可用,不会在存储库中查找。
如果您有一个jar文件,例如Maven Central存储库中没有该文件,并且您不想使用system
范围,那么在您的本地Maven存储库中安装jar;见Guide to installing 3rd party JARs。完成后,您可以使用compile
范围的正常依赖关系。