最近用网易云信做一个在某条件下发送报警短信的功能,但是在部署到服务器环境后出现 了
java.lang.ClassNotFoundException: com.alibaba.fastjson.JSON
度娘一下,解决办法基本都是:把jar放在lib目录下,然后我就照做了。。依然不管用;
一通分析,左试右试,终于搞好了:首先保证服务器环境下的lib文件夹要有这个jar,然后把jar包手动添加到maven仓库,下面上方法。
1.配置环境变量!
因为必须使用到命令行,所以配置本地jar之前要确定是否配置了maven的环境变量,如果没有配的自行百度,在这贴上一个链接,供伸手党使用。(注意!:执行mvn install:installfile命令时默认取settings.xml,所以,平时在ide中配置了其他名字的settings.xml的同学要注意了!)
2.用maven命令将jar包移动到maven的本地repository中吧!
pom.xml
<build> <pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <classpathPrefix>lib/</classpathPrefix> <mainClass>com.twpow.equipment.run.App</mainClass> </manifest> </archive> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <executions> <execution> <id>copy-dependencies</id> <phase>prepare-package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/lib</outputDirectory> <overWriteReleases>false</overWriteReleases> <overWriteSnapshots>false</overWriteSnapshots> <overWriteIfNewer>true</overWriteIfNewer> </configuration> </execution> </executions> </plugin> </plugins> </pluginManagement> </build>
注:如果出现这个问题的话,只需像上段代码一样,加上
<pluginManagement></pluginManagement>,就不报错了,
具体原因未知,可能是m2e插件有问题
<dependency> <groupId>httpclient</groupId> <artifactId>httpclient</artifactId> <version>4.5.3</version> </dependency>
语法:
mvn install:install-file -Dfile=(jar包的位置) -DgroupId=(dependency对应的groupId) -DartifactId=(dependency对应的artifactId) -Dversion=(dependency对应的version) -Dpackaging=jar
例:
mvn install:install-file -Dfile=D:\BaiduNetdiskDownload\compmany\jars\httpclient-4.5.3.jar -DgroupId=httpclient -DartifactId=httpclient -Dversion=4.5.3 -Dpackaging=jar
如果看到出现如下提示的时候,表示添加成功啦!