我有一個Maven構建的項目,項目模塊之間有依賴關係,我須要用到一個本地的jar包,而該jar包不能經過配置pom.xml文件從遠程倉庫自動下載,因而我直接導入該jar包到其中一個項目,不經過pom.xml進行管理,致使其餘依賴該模塊的模塊不能引用該jar,出現ClassNotFoundExceptionweb
在該項目中,模塊之間存在以下依賴:maven
該項目須要引入fastdfs_client_v1.20.jar 這個包,來實現對fastDfs分佈式文件系統進行操做,service、controller都涉及到該操做的使用 ,因此如今但願把對FastDfs的操做工具類放在common這個模塊,來進行共享,可是如今common這個模塊直接把fastdfs_client_v1.20.jar經過 lib導入的話,由於這種作法並非經過Maven進行構建,因此service 和web模塊都無法對common模塊涉及FastDfs的操做類進行繼承,也就是說就算把工具類放在common模塊,service和web模塊都沒法訪問到該工具類,沒法導入相應的包,運行整個WEB項目的時候,上傳文件到FastDfs系統,就會出現ClassNotFoundException,除非service 和 web 模塊都能繼承 common模塊下的fastdfs_client_v1.20.jar這個jar包分佈式
1.找到該包的具體位置工具
2.打開CMD ,進入該第三方jar包的目錄spa
3.運行一下命令,對該jar包進行手動構建3d
mvn install:install-file -Dfile=D:\Users\10856214\workspace-template\fastDfs\lib\fastdfs_client_v1.20.jar -DgroupId=fastdfs_client -DartifactId=fastdfs_client -Dversion=1.20 -Dpackaging=jar -DgeneratePom=true
4.查看本地倉庫,看該jar包是否已經添加到本地倉庫文件夾code
5.把該jar包交給maven管理,添加到pom.xml中xml
<dependency> <groupId>fastdfs_client</groupId> <artifactId>fastdfs_client</artifactId> <version>1.20</version> </dependency>
6.從新Maven install common模塊,看service 和web模塊是否已經正常導入common模塊的工具類blog
第二種方式(有時候可能不行)繼承
在maven項目中,對於那些在maven倉庫中不存在的第三方jar,依賴解決一般有以下解決方法:
方法1:直接將jar包拷貝到項目指定目錄下,而後在pom文件中指定依賴類型爲system,如:
<dependencies> <dependency> <groupId>xxx</groupId> <artifactId>xxx</artifactId> <version>6.0</version> <scope>system</scope> <systemPath>${project.basedir}/libs/xxx-1.0.jar</systemPath> </dependency> </dependencies>
請注意:scope爲system的依賴,在打包時不會自動打包到最終jar包中的,必須在resources節點中明確指定須要一塊兒package的資源:
<resources> <resource> <targetPath>lib/</targetPath> <directory>lib/</directory> <includes> <include>**/my-jar.jar</include> </includes> </resource> </resources>
這個方法在解決單個項目依賴是能夠的。
可是,若是項目中存在多個模塊,且在多個模塊中都須要依賴指定的第三方jar包,那在不一樣的模塊中都進行這樣的配置有失穩當,jar包要來回拷貝屢次。