温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

IDEA使用Maven项目无法加入本地Jar包如何解决

发布时间:2020-11-07 16:41:34 来源:亿速云 阅读:709 作者:Leah 栏目:开发技术

IDEA使用Maven项目无法加入本地Jar包如何解决?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

使用IDEA编辑Web项目已经逐渐超过了使用eclipse的人数,但是IDEA对于pom.xml的执行也就是Maven方式导包支持并不是很完善,简单来说就是pom.xml上面记录的依赖库一般都能导入,但是如果pom.xml上面的某个依赖库失效,比如远程服务器关闭或者网络不通,或者是你想要加入本地硬盘上的某个jar包而不修改pom.xml的时候,IDEA的弊端就会显现出来。主要表现就是无法获得的依赖库或者本地Jar包无法放到/WEB-INF/lib目录下,导致Web项目部署时报错。

一个常见的错误就是ojdbc8,也就是连接Oracle数据库12c所需的最新的jdbc驱动包,这个在maven网站上是可以搜索到的,如下http://mvnrepository.com/artifact/com.github.noraui/ojdbc8/12.2.0.1

给出的依赖库网络路径为

<!-- https://mvnrepository.com/artifact/com.github.noraui/ojdbc8 -->
<dependency>
  <groupId>com.github.noraui</groupId>
  <artifactId>ojdbc8</artifactId>
  <version>12.2.0.1</version>
</dependency>

然而这个路径在2015年还有效,在2018年已经连接不上了(目前唯一还有效的是ojdbc for java 1.4的版本,2015年,无法支持oracle 10g及以后的数据库),如果你在maven里这样配置,那么IDEA的models里就会告诉你找不到该依赖库,当然你的WEB-INF里面也就不会有jdbc的jar包,你的应用当然就连接不了数据库了

IDEA使用Maven项目无法加入本地Jar包如何解决

IDEA会贴心的在相关maven依赖库下面加波浪线,并且把无法加载的资源用红色表示。

如果此时我们手动向Libraries里面加入本地的Jar包可不可以呢?

能加当然是能加进去,不过根据我多次的反复实验发现,你加入到Project Structure里面的Models或者Libraries里面之后,编写代码的时候是可以找到依赖的,但是在打war包的时候还是不会把ojdbc加入进去的,所以还是没能达到我们想要的效果。这主要是因为IDEA只会把pom.xml里面记录的jar包放入到WEB-INF,而不会理睬你其他方式加入的jar包。所以我们最后还得从maven入手。

此时我们就需要在上图出现问题的地方找到标红色的Classes下面的路径,通过手动点击来修改成本地jar包的位置,并且应该变为绿色,如下

IDEA使用Maven项目无法加入本地Jar包如何解决

这样IDEA就不会把这个maven源报错了,同时pom.xml并没有被修改,只是项目目录下.idea目录下的某个.iml被修改了,这个修改要好好保留,因为不知道什么时候你一编译就又会按照pom.xml再给你改回来。如果需要长期不让它报错,可以使用cmd命令把本地的jar包加入到本地maven库中,命令如下:(把当前目录下的ojdbc8.jar按照上面的pom.xml中的配置加入到本地maven源)

mvn install:install-file -Dfile=ojdbc8.jar -DgroupId=com.github.noraui -DartifactId=ojdbc8 -Dversion=12.2.0.1 -Dpackaging=jar

另外如果不把maven里面自己设置的jar包输出到web根目录lib文件夹的话,那么打出来的war包或者是放在tomcat里跑还是会在启动的时候报错,如下就是使用了HttpClient也在maven里加入了HttpClient的依赖,但是启动tomcat仍然报错找不到类,此时你需要按照tomcat的一贯套路把相关jar包放到web根目录的lib目录下

IDEA使用Maven项目无法加入本地Jar包如何解决

此时还是进入Project Structure,在左侧找到Artifacts,然后找到WEB-INF,新建一个lib目录,然后点击加号把相关的库引入

IDEA使用Maven项目无法加入本地Jar包如何解决

加完之后

IDEA使用Maven项目无法加入本地Jar包如何解决

只有这样,打出来的war包的WEB根目录下才会有lib文件夹和里面的相关依赖jar包

如果你发现修改了这里还没有把自定义的jar包打包到WEB-INF下面(只是在代码窗口里不报错了),一个可能性是在编译过程中刚刚的修改又被pom.xml给覆盖了,另一个原因可能是你没有把编译结果输出到待发布目录,通过下面的方式可以修改。

IDEA使用Maven项目无法加入本地Jar包如何解决

 后记:在没有使用maven框架的时候,java文件和包是可以直接放在src目录下的,但是引入maven之后,IDEA会自动帮你吧原来src下的包迁移到src/main/java下面,同时建立src/main/resources目录,这里面一般放我们的log4j配置文件log4j.properties。

在没有maven框架的时候,log4j.propertise应该放在src下面才能被自动识别,而加入maven框架之后应该放在src/main/resources下,否则log4j找不到默认配置文件

如下:在不使用maven框架时的目录结构,所有jar包都是放在项目根目录下

IDEA使用Maven项目无法加入本地Jar包如何解决

使用maven后的目录结构,没有jar包了,以pom.xml进行引入

IDEA使用Maven项目无法加入本地Jar包如何解决

另外还需要注意的一点就是,对于pom.xml里面和idea里面均有多出设置JDK版本的地方,最好统一,否则无法build成功,首先是pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>
  <groupId>groupId</groupId>
  <artifactId>XDphone</artifactId>
  <version>1.0-SNAPSHOT</version>
  <dependencies>
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.51</version>
    </dependency>
    ......

  </dependencies>
</project>

然后是项目代码风格

IDEA使用Maven项目无法加入本地Jar包如何解决

然后是编译器版本在File-Settings里面

IDEA使用Maven项目无法加入本地Jar包如何解决

看完上述内容,你们掌握IDEA使用Maven项目无法加入本地Jar包如何解决的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI