ClassNotFound - 将第三方Jar添加到Maven

时间:2017-08-23 09:46:51

标签: java maven intellij-idea jar

好的我是新来的并且挣扎所以请耐心等待!

我正在尝试将其添加到现有的网络应用

https://github.com/RusticiSoftware/TinCanJava

页面上的说明建议使用Maven构建Jar,我已经完成了。然后,我尝试了几种方法将已编译的Jar放入我的Web应用程序项目中,例如

添加为依赖

    <dependency>
        <groupId>tincan</groupId>
        <artifactId>tincan</artifactId>
        <version>1.0</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/src/main/resources/tincan-1.1.1-SNAPSHOT-jar-with-dependencies.jar</systemPath>
    </dependency>

或安装

  

mvn install:install-file -Dfile = C:\ workspace \ tincanJava \ TinCanJava \ target \ tincan-1.1.1-SNAPSHOT-jar-with-dependencies.jar -DgroupId = com.rusticsoftware.tincan -DartifactId = tincan -Dversion = 1.0 -Dpackaging = jar

我可以看到Intellij中的文件和类,所有元素都在显示,但是当我运行应用程序时,我收到以下错误:

Caused by: java.lang.ClassNotFoundException: com.rusticisoftware.tincan.StatementsQueryInterface
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:509)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

我这样做错了吗?我应该将源添加到我的目录和依赖项到我的POM并以这种方式构建吗?

1 个答案:

答案 0 :(得分:1)

范围system与范围provided相同,这意味着此jar不包含在您的依赖项中。运行应用程序时必须将其添加到类路径中

来自documentation

  

<强>系统

     

此范围与提供的类似,但您必须提供   显式包含它的JAR。工件总是可用的   没有在存储库中查找。

     

<强>提供

     

这很像编译,但表示你期望JDK或者   容器在运行时提供依赖性。例如,何时   您可以为Java Enterprise Edition构建Web应用程序   设置对Servlet API和相关Java EE API的依赖   提供范围是因为Web容器提供了这些类。这个   scope仅在编译和测试类路径上可用,并且是   不可传递