IDEA通过Artifacts发布Web项目

article/2025/9/6 23:01:05

今天在用IDEA运行一个Java Web项目时突然报错java.lang.ClassNotFoundException: com.mysql.jdbc.Driver,但是我的项目的lib目录下以及添加了jdbc的连接jar包,而且在IDEA中编译没有报错,而且之后我自己添加的两个jar包也找不到,但是IDEA自动提示正常,说明项目的确引入了jar包,但是在发布项目时出现了问题。

经过排查发现IDEA发布项目到一个out文件夹下,但是该文件夹下没有lib目录。这就涉及到IDEA通过Artifacts发布项目的问题了,之前我通过IDEA的Artifacts创建一个Java web项目过程记录如下:https://blog.csdn.net/theVicTory/article/details/104282873

既然缺少lib文件,那么解决方法就是设置输出项目时添加你需要的文件夹,如下所示,在Artifacts设置时的output root中添加lib并将项目的依赖jar包放到该目录下即可解决问题。

那么问题来了,什么是Artifacts?IDEA是如何打包输出一个Java Web项目的呢?

Artifacts

artifacts是maven中的一个概念,是一个用于将Java web项目打包的工具,以便于项目在服务器上进行部署或分发到应用平台。其打包方式有如下三种:

  • Java Archive,将Java类文件及相关资源聚合为一个文件进行打包
  • WAR:Web Application aRchive,一种包含JSP、Servlet、Java类、XML、标签库等Web应用程序资源的JAR文件
  • exploded:展开模式,即不将war文件压缩,保留原来的文件目录结构,便于在开发时进行文件的修改。

在IDEA右上角有个Project Structure的图标,也可使用快捷键Ctrl+Alt+Shift+S打开,在Artifacts中配置中选择的Type为war exploded,将项目以不压缩的方式发布到指定的目录下。选项框Output directory可指定项目要发布的位置,默认会在当前项目下创建一个out目录用于项目的发布。发布的内容就是标签<output root>下的内容,如果你项目中用到的资源没有放到这个目录下,则不会被打包到发布目录,从而出现找不到资源报错的情况,因此如果需要添加一些文件到发布目录,则需要手动添加到这个<output root>标签下。

其他的Project Structure选项卡用于对项目进行设置:第一个是Project选项卡,可以设置项目的名字、SDK与项目编译输出路径

第二个选项卡为Modules,可以对项目进行模块化设置,例如我使用的是web项目模块。它又有三个子选项卡,其中Sources可以用于标记你项目中的文件夹类型,从而让IDEA更好地识别你的项目。第二个Paths用于详细设置项目的编译、测试、部署的文件输出路径。第三个Dependencies用于设置项目所使用的依赖,例如SDK、lib、dependency

 第三个选项卡为Libraries即项目依赖的lib库的配置,例如这里我的项目依赖于Java EE 6库,点击+号可以向库中添加jar包

 第四个Facets选项卡表述了在Module中使用的各种各样的框架、技术和语言,比如web、strtus2、spring、hibernate等。这些Facets让Intellij IDEA知道怎么对待module内容,并保证与相应的框架和语言保持一致。Facet 是和 Module 紧密结合的,你如果是在 Module 里配置了,那么 Facet 里边也会出现

第五个就是之前的Artifacts选项卡了,用于配置项目打包部署和输出。

IDEA部署Tomcat项目

Tomcat服务器部署项目有三种方式

  • 第一种是最为常见的,就是将项目放到Tomcat安装目录下的webapps文件夹内,这样启动服务器后可以直接通过服务器访问到该文件夹下的所有项目
  • 进而我们可以修改Tomcat/conf/server.xml文件,从而指定服务器的部署目录
    <Context path="/xx" docBase="D:\\workspace\\xx\\target\\xx" reloadable="true" sessionCookiePath="/xx"sessionCookieName="yoursessionname"></Context>
  • 第三种是通过创建镜像目录的方式,在Tomcat/conf/Catalina目录下创建xml文件设置镜像位置

    <Context path="/xx" docBase="D:\\workspace\\xx\\target\\xx" debug="0" privileged="true"> </Context>

    IDEA就是通过第三种镜像的方式启动Tomcat服务器的,可以看到其服务器启动是通过catalina.bat.run,而不是startup.bat。

CATALINA_HOME是Tomcat的安装目录,CATALINA_BASE是Tomcat的工作目录。如果我们想要运行Tomcat的多个实例,但是不想安装多个Tomcat软件副本。那么我们可以配置多个工作目录,每个实例独占一个工作目录,但是共享同一个安装目录。Tomcat每个运行实例需要使用自己的conf、logs、temp、webapps、work和shared目录,因此CATALINA_BASE就指向这些目录。 而其他目录主要包括了Tomcat的二进制文件和脚本,CATALINA_HOME就指向这些目录。如下所示,可以看到IDEA在启动Tomcat时输出的日志,在c盘的IDEA目录中创建了tomcat的临时工作目录,但使用的仍是安装目录


http://chatgpt.dhexx.cn/article/FN6bbnqi.shtml

相关文章

idea Artifacts 配置

以Artifacts方式工作 什么是artifact&#xff1f; artifact是一种用于装载项目资产以便于测试&#xff0c;部署&#xff0c;或者分布式软件的解决方案。例如集中编译class&#xff0c;存档java应用包&#xff0c;web程序作为目录结构&#xff0c;或者web程序存档等。 artifact …

IDEA中的Build Artifacts详解

使用IDEA编写完JAVA代码&#xff0c;需要对外发布时&#xff0c;我们就会用到IDEA的Build Artifacts...功能。在没有创建Artifact时&#xff0c;菜单“Build”|"Build Artifacts..."是灰化的&#xff0c;不可用。所以&#xff0c;第一步是进入project structure创建A…

No artifacts configured

在配置tomcat得时候出现这种情况有可能是&#xff0c;IDEA中没有导入web得框架。 1、点击项目得添加框架这个选项 2、选上&#xff0c;点击ok即可。这是再去看tomcat中就会出现artifacts。

Idea配置项目的tomcat时候没有Artifacts的最全解决办法

很多时候导入别人的项目&#xff0c;配置tomcat的时候会发现没有Artifacts&#xff0c;这种情况可能有两个原因&#xff0c;任何一个原因都可能导致Artifacts没有。 原因一&#xff1a; 没有勾选maven的一些选项导致的&#xff0c;不过这个原因其实很少会发生。解决办法如下&a…

关于Facet、Artifacts概念等

转自&#xff1a;https://www.cnblogs.com/bityinjd/p/9284378.html Facet的作用就是配置项目框架类支持。 比如我们现在要开发的是一个 web 项目&#xff0c;那就需要 web 相关的 Facet&#xff0c;事实上&#xff0c;如果没有这个配置支持&#xff0c;编译器也不知道这个项…

IDEA编辑器里面的Artifact详解

IDEA编辑器里面的Artifact详解&#xff1a; 前言:artifact的中文释义是工程的意思。 IDEA的好多地方都出现artifact&#xff0c;如下列图&#xff1a; 图一&#xff1a;&#xff08;idea设置里面的 Project Structure &#xff0c;即项目结构里面的 Artifacts&#xff09; 图二…

IDEA中Artifact的配置

什么是Artifact 在我们用idea初次开发web项目时&#xff0c;部署Tomcat时会遇到配置Artifacts这个问题&#xff0c;那么这个Artifact到底是什么呢&#xff1f;Artifacts表示某个module要如何打包&#xff0c;可以简单地理解为一个module有了 Artifacts 就可以部署到应用服务器…

关联规则的概念

关联规则的概念 1、关联规则概念 借用一个引例来介绍关联规则挖掘[1]。 某超市销售记录 定义一&#xff1a;设I{i1,i2,…,im}&#xff0c;是m个不同的项目的集合&#xff0c;每个ik称为一个项目。项目的集合I称为项集。其元素的个数称为项集的长度&#xff0c;长度为k的项集…

关联规则的评价

本文介绍了9个关联规则评价的准则&#xff0c;其中全自信度、最大自信度、Kulc、cosine&#xff0c;Leverage是不受空值影响的&#xff0c;这在处理大数据集是优势更加明显&#xff0c;因为大数据中想MC这样的空记录更多&#xff0c;根据分析我们推荐使用kulc准则和不平衡因子结…

强关联规则挖掘

挖掘强关联规则的过程&#xff1a; 1.得到最大频繁项目集&#xff08;这里使用apriori算法&#xff09; 2.在最大频繁项目集中找强关联规则 工程结构&#xff1a; &#xff08;把下面的文件放到自己建的工程中就可以运行了&#xff0c;如果嫌麻烦的话把这些都放到main.cpp中…

关联规则 置信度与支持度以及Apriori算法简介

关联规则&#xff1a;购物篮分析&#xff0c;最早的出现是为了发现超市销售数据库中不同商品之间的关联关系。 文章目录 1.案例引入&#xff08;1&#xff09;啤酒与尿布的故事&#xff08;2&#xff09;购物篮例子 2.关联分析问题定义2.1二元表示2.2项集和支持度计数2.3 关联规…

关联规则挖掘_基于人工智能的网络告警关联分析处理的应用

1 概述 随着通信网络近些年的快速发展,其规模已经相当庞大,在网络中每天都会产生告警信息,并且这些信息数据量庞大、突发故障多,当网络设备出现故障并引发告警时,与它关联的设备也会引发相应的故障,并在短时间内产生大量告警信息[1-2]。由于一个故障的产生往往会引发多…

关联规则常用算法

关联规则&#xff08;Association Rules&#xff09;是海量数据挖掘&#xff08;Mining Massive Datasets&#xff0c;MMDs&#xff09;非常经典的任务&#xff0c;其主要目标是试图从一系列事务集中挖掘出频繁项以及对应的关联规则。关联规则来自于一个家喻户晓的“啤酒与尿布…

关联规则挖掘算法

关联规则挖掘是一种基于规则的机器学习算法&#xff0c;该算法可以在大数据库中发现感兴趣的关系。它的目的是利用一些度量指标来分辨数据库中存在的强规则。也即是说关联规则挖掘是用于知识发现&#xff0c;而非预测&#xff0c;所以是属于无监督的机器学习方法。 “尿布与啤酒…

Python实现关联规则推荐

1.什么关联规则 关联规则&#xff08;Association Rules&#xff09;是反映一个事物与其他事物之间的相互依存性和关联性&#xff0c;如果两个或多个事物之间存在一定的关联关系&#xff0c;那么&#xff0c;其中一个事物就能通过其他事物预测到。关联规则是数据挖掘的…

关联规则

何为关联规则&#xff0c;关联规则是发现事物之间关联关系的分析过程&#xff0c;其典型的例子就是购物篮分析。购物篮分析就是确定顾客在一次购物过程中一起购买的商品&#xff0c;通过分析发现不同商品之间的购买习惯&#xff0c;发现顾客购买的行为习惯&#xff0c;从而发现…

python 关联规则

文章目录 一、基本概念定义1. 记录&#xff08;事务&#xff09;定义2. 事务集定义3. 项目&#xff08;项&#xff09;定义4. 项目集&#xff08;项集&#xff09;定义5. k项集定义6. 支持度&#xff08;Support&#xff09;定义7. 置信度&#xff08;Confidence&#xff09;定…

关联规则分析

文章目录 一、经典案例二、相关概念由k个项构成的集合X>Y含义事务仅包含其涉及到的项目&#xff0c;而不包含项目的具体信息支持度 (support)置信度 (confidence)提升度 (lift) 三、实验分析自制数据集电影数据集题材 一、经典案例 在美国&#xff0c;一些年轻的父亲下班后…

关联规则(Association Rules)笔记

1 关联规则产生的原因&#xff1a;购物篮问题 关联规则最初是为了解决购物篮问题而产生。上世纪九十年代&#xff0c;美国的沃尔玛超市发现&#xff0c;啤酒和尿布这两种完全不着边际的商品竟然有很高的概率一起被购买。 在一段时间之后&#xff0c;他终于分析出了原因&#xf…

关联规则(Apriori、FP-grpwth)

什么是关联规则 关联规则&#xff08;Association Rules&#xff09;是反映一个事物与其他事物之间的相互依存性和关联性&#xff0c;是数据挖掘的一个重要技术&#xff0c;用于从大量数据中挖掘出有价值的数据项之间的相关关系。 所谓数据挖掘就是以某种方式分析源数据&#…