因项目需要采集实时数据,需要用到别人提供的若干个jar包,调用人家封装的函数,记录下这一过程碰到的问题。
最终采用的方式是加入maven管理了。
踩到的坑:程序起不来,打包打不了。
问题:
1.怎么引入包到自己的程序,程序启动找不到包怎么搞
2.该怎么打包使我们的主文件能包含这些不在maven管理的第三方jar包
第一步,准备好你要导入的jar包,进入idea中的 File->Project Structure ->Modules页面,选择你需要导入的模块,然后选择Dependencies页签,点击左上角的 【+】加号,把需要的jar全都加进来,注意生命周期设置为compile
然后点击 apply-> ok 在刷新下maven。
查看是否导入成功,看看在Project页签下的External Libraries 下有没有我们刚刚导入的包
进行到这一步,正常来说应该能使用这些jar包里面的接口。
但是有时候明明已经导入成功了,启动程序还是提示程序包找不到
Caused by: java.lang.ClassNotFoundException.xxxxx
尝试下清清缓存,删删idea的索引
还不行的话。那再进Project Structure 下的Libraries页签,看看这里有没有刚刚手动引入的包,没有的话左上角【+】加号,添加。
到这一步应该是可以了。如果还不行。。。
只能用最后一招了,因为最后我们需要打包部署到服务器上运行,所以maven给我们打包的时候也需要把这些包加上。所以直接把这些包加入maven把,让maven帮我们处理,
而我们要做的就是一个包执行一次这个命令,替换activation.jar 为需要的包,设置DgroupId 和DartifactId 的值,最好把这些包全部放在一个文件夹,我就是放在com.extend下,DartifactId就是包的名字, 版本的话直接给一个1.0.0
mvn install:install-file -Dfile=E:\第三方jar包/activation.jar -DgroupId=com.extend -DartifactId=activation -Dversion=1.0.0 -Dpackaging=jar
这个命令直接进入E:\第三方jar包这个文件夹,然后目录处敲入cmd,然后在命令窗口执行。
执行完这个后,需要在最外层的pom文件,把这个依赖加入到maven,然后在相应的模块pom文件使用它
一个外部jar包这样操作一次,最终,程序肯定能运行,打包肯定能包含这些第三方包。
不然就会出现,好不容易程序能起来了,但是打包打不进去的局面,关于打包方式,查网上的说可以使用maven带的插件,然后指定第三方包的路径,就可以,我反正试了,没成功。要是包就几个的话,直接命令执行加入maven管理,最稳妥。