具有maven依赖性的Java ClassNotFoundException?

时间:2014-12-18 12:46:00

标签: java maven

当我尝试使用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: 

1 个答案:

答案 0 :(得分:0)

这是因为您将范围设置为system。当你这样做时,Maven假设你在运行它时自己正在关注jar在类路径上。

来自Maven documentation

  
      
  • system 此范围与提供的类似,只是您必须提供明确包含它的JAR。工件始终可用,不会在存储库中查找。
  •   

如果您有一个jar文件,例如Maven Central存储库中没有该文件,并且您不想使用system范围,那么在您的本地Maven存储库中安装jar;见Guide to installing 3rd party JARs。完成后,您可以使用compile范围的正常依赖关系。