Maven导入本地jar包,以及打包时可能会出现的问题

一、本地导入jar包

1.将jar包复制一份,使用解压工具将jar包解压成文件夹形式;在:{jar包名}/META-INF/ 有一个.MF文件,使用工具打开,会有这个jar包相关的包信息(我使用自己以前打包的jar包演示)

Maven导入本地jar包,以及打包时可能会出现的问题_第1张图片

2.复制文件中的Manifest-Version 、Start-Class信息,之后会使用到(注意:部分jar包的.MF文件可能并不包含这些信息,可以找jar文件提供者获取,否则就需要靠猜了:) 在解压后的文件夹可以大致的猜出 Start-Class 的值,Start-Class 的值基本上就是文件夹的主目录结构,譬如com.xxx.xxx等是常用的结构)

3.将下载或者使用他人打包过的没有解压过的jar文件复制到项目src中的位置,推荐新建一个libs的文件夹;

Maven导入本地jar包,以及打包时可能会出现的问题_第2张图片

4.配置pom.xml文件,在标签中配置本地jiar包位置。

此处配置的groupId = Start-Class ,version = Manifest-Version ,artifactId =jar包名称


    com.solid
    SReaderAPI.jar
     1.0
     system
     
        
       ${project.basedir}/src/libs/XXX.jar
     

按照以上步骤就可以使用maven将本地的jar导入项目,而不依赖IDE工具的库导入的方式引入所需的jar。

二、使用Maven打包后会出现的问题

如果仅仅只按照以上步骤的配置在使用maven工具打包可能会出现以下的警告,但是项目的jar包还是可以打好。

'dependencies.dependency.systemPath' for com.solid:{jar包名称}.jar:jar should not point at files within the project directory, ${project.basedir}/src/libs/{jar包名称}.jar will be unresolvable by dependent projects @ line 37, column 19
It is highly recommended to fix these problems because they threaten the stability of your build.
For this reason, future Maven versions might no longer support building such malformed projects.

此时运行这个项目jar包时就可能会出现以下的报错

Exception in thread "main" java.lang.NoClassDefFoundError: com/xxx/xxx

这里说的是找不到所需的类,这里的类如果指的是引入的jar包中的类的话可以使用以下解决办法

directory中的值为:需要打包的jar路径 ;targetPath 的值为:复制到的路径 这里指的是打包后所有jar包在自己打的jar包中存放的位置,在自行解压的jar包文件夹中可以看出,通常使用spring-boot-maven-plugin 打包插件打包的,复制到的路径默认为以下的值;includes->include下的值为:指定打包路径下的那个jar包 ,以下表示所有的jar包。




    
      
        
        src/libs
         
        lib/
        
        
          **/*.jar
        
      
    

本人按照以上方法步骤打包后解决了报Exception in thread "main" java.lang.NoClassDefFoundError: com/xxx/xxx的错误。

你可能感兴趣的:(maven,jar,java)