热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

详解IDEA使用Maven项目不能加入本地Jar包的解决方法

这篇文章主要介绍了详解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

给出的依赖库网络路径为



  com.github.noraui
  ojdbc8
  12.2.0.1

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

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

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

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

此时我们就需要在上图出现问题的地方找到标红色的Classes下面的路径,通过手动点击来修改成本地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目录下

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

加完之后

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

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

 后记:在没有使用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包都是放在项目根目录下

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

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


  4.0.0
  
    1.8
    1.8
  
  groupId
  XDphone
  1.0-SNAPSHOT
  
    
      com.alibaba
      fastjson
      1.2.51
    
    ......

  

然后是项目代码风格

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

这样就能避免internal compiler error了


推荐阅读
  • 本文详细介绍了如何在Spring Boot项目中配置Maven的pom.xml文件,包括项目的基本信息、依赖管理及构建插件的设置。 ... [详细]
  • Eclipse 中 Maven 的基础配置指南
    本文详细介绍了如何在 Eclipse 环境中配置 Maven,包括环境变量的设置、Maven 插件的安装与配置等关键步骤,旨在帮助开发者顺利搭建开发环境。 ... [详细]
  • 本文详细介绍了如何使用Python通过GET和POST方法发送HTTP请求,并接收HTTP响应的具体实现方法。包括示例代码和相关模块的功能说明。 ... [详细]
  • 优化使用Apache + Memcached-Session-Manager + Tomcat集群方案
    本文探讨了使用Apache、Memcached-Session-Manager和Tomcat集群构建高性能Web应用过程中遇到的问题及解决方案。通过重新设计物理架构,解决了单虚拟机环境无法真实模拟分布式环境的问题,并详细记录了性能测试结果。 ... [详细]
  • JSP服务器概述及搭建指南
    本文详细介绍了JSP服务器的概念、主流服务器软件及其搭建步骤,旨在帮助开发者更好地理解和使用JSP技术。 ... [详细]
  • 本文介绍了Java Web应用中的资源重定向和请求转发机制,包括默认欢迎资源文件的设置方法,以及多个Servlet之间的调用规则和数据共享方案。 ... [详细]
  • 深入解析Apache SkyWalking CVE-2020-9483 SQL注入漏洞
    本文详细探讨了Apache SkyWalking中的SQL注入漏洞(CVE-2020-9483),特别是其影响范围、漏洞原因及修复方法。Apache SkyWalking是一款强大的应用性能管理工具,广泛应用于微服务架构中。然而,该漏洞使得未经授权的攻击者能够通过特定的GraphQL接口执行恶意SQL查询,从而获取敏感信息。 ... [详细]
  • 深入探讨ASP.NET中的OAuth、JWT与OpenID Connect
    本文作为前文关于OAuth2.0和使用.NET实现OAuth身份验证的补充,详细阐述了OAuth与JWT及OpenID Connect之间的关系和差异,旨在提供更全面的理解。 ... [详细]
  • 本文由「Vue虚拟实验室」的成员effort撰写,深入探讨了Vue CLI 3.0创建项目后的配置细节,特别是如何通过配置代理解决开发环境中的跨域问题。 ... [详细]
  • 本文详细介绍了如何在CentOS 7操作系统上搭建GitLab服务器的过程,包括环境准备、软件安装及基本配置等关键步骤。 ... [详细]
  • Windows环境下部署Kubernetes Dashboard指南
    本指南详细介绍了如何在Windows系统中部署Kubernetes Dashboard,包括下载最新配置文件、修改服务类型以支持NodePort访问、下载所需镜像并启动Dashboard服务等步骤。 ... [详细]
  • 本文详细介绍了如何配置Apache Flume与Spark Streaming,实现高效的数据传输。文中提供了两种集成方案,旨在帮助用户根据具体需求选择最合适的配置方法。 ... [详细]
  • Docker入门与实践指南
    本文介绍了Docker的基础知识,包括其作为开源应用容器引擎的特点,以及如何利用Docker将应用程序及其依赖项打包成轻量级的容器镜像。同时,还详细讲解了Docker的核心概念、安装过程及基本命令操作。 ... [详细]
  • 本文介绍了如何在TP-LINK路由器上配置端口映射,将局域网内的设备通过特定端口暴露于互联网,包括设置虚拟服务器和调整Tomcat服务端口的具体步骤。 ... [详细]
  • 构建首个Spring MVC应用程序
    本指南将指导您如何从零开始创建一个简单的Spring MVC应用,涵盖项目模块创建、依赖管理、核心配置及控制器开发等关键步骤。 ... [详细]
author-avatar
用户wuhqqnrd0m
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有