Maven项目常见各类 QA

news2024/9/28 6:19:20

一、pom.xml文件

1.1 there is no POM in this directory

[ERROR] The goal you specified requires a project to execute but there is no POM in this directory (/home/cys/SEtesting/example/smartut-report). Please verify you invoked Maven from the correct directory. -> [Help 1]
 

-1.1.1原因:此类报错,因为该目录下无pom.xml配置文件;

-1.1.2解决:前往有pom.xml的目录一级;

1.2 The file /home/xx/pom.xml is not sorted :

 一般出现在改完pom.xml后:

[INFO] Verifying file /home/xx/pom.xml

[ERROR] The xml element <groupId>junit</groupId> should be placed before <groupId>net.javacrumbs.json-unit</groupId>

[ERROR] The file /home/xx/pom.xml is not sorted

-1.2.1原因: 该pom.xml 的格式被你改出了问题,问题不大,用一种排序插件[sortpom]的命令即可;

-1.2.2解决: 该目录下输入如下命令即可:[100%解决not sorted]

mvn com.github.ekryd.sortpom:sortpom-maven-plugin:3.3.0:sort -Dsort.predefinedSortOrder=custom_1

1.3 更改pom.xml后显示有几个plugin not found

java.lang.NoClassDefFoundError,这是因为 JVM 无法初始化 org.apache.james.backends.cassandra.DockerCassandraSingleton 类。

-1.3.1 原因

  1. 依赖未正确加载:所需的类或库没有正确加载到类路径中。
  2. 类路径问题:类或库存在于类路径中,但在运行时未正确加载。
  3. 类加载器问题:类加载器配置问题导致某些类无法加载。

-1.3.2 解决:

  1. 检查依赖是否正确加载:确保所需的依赖已经被正确添加到 pom.xml 文件中,并且已经被下载到本地仓库。
  2. 强制更新依赖项:使用 -U 选项强制更新所有依赖项。
  3. 检查类路径:确认类路径中是否包含了所需的类或库。
  4. 检查类加载器配置:确保类加载器配置正确。

 尝试mvn clean install  -U【报错:Could not initialize class不能初始化类】

[INFO] Running org.xx.init.xTest

[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.005 s <<< FAILURE! - in org.xx.init.xTest

[ERROR] org.xx.init.xTest  Time elapsed: 0.005 s  <<< ERROR!

java.lang.NoClassDefFoundError: Could not initialize class

org.apache.james.backends.cassandra.DockerCassandraSingleton

1.4 pom.xml内配置的{argLine} 介绍

在 Maven 中,argline 是一个用于配置 JVM 参数的属性,它允许你在构建或运行 Maven 插件时传递参数给 Java 应用程序。

同样,对于 ${maven-plugin-annotations.version}这一类参数:

会自动到主项目的pom.xml去看设置的参数值;

二、Maven项目执行生命周期中的报错

2.1 Maven版本不够:

按其本身的英文解释就是当前版本3.6.3不行,至少需要3.8.1往上。

2.2 clean相关

2.2.1 构建前没有进行clean,会直接读取上一次构建的缓存:

2.3 Mvn  compile / test-compile 报错:

2.3.1 a.java[20,21]找不到符号

如下:

[ERROR] /home/a/aTest.java:[51,18] 找不到符号

  符号:   类 TestId

  位置: 类 org.a.aTest

2.3.1.1 原因 :pom.xml缺少相应的依赖

mvn test 依赖于 mvn compile 的结果; mvn compile 没有成功执行,从而导致 “找不到符号” 错.

2.3.1.2  解决:

确认所需的依赖是否已经被正确添加到 pom.xml 文件中,并且是否已经被正确下载到本地仓库。

修改pom.xml-->mvn clean install. 再进行compile;

2.3.2 b.java:[33,1] 仅从类和接口静态导入

2.3.2.1 原因 :  

第 33 行存在一个非静态导入,而你只允许从类和接口进行静态导入。这通常是因为你在导入某个类或接口时,错误地导入了一个非静态成员。

2.3.2.2  解决:
  1. 检查导入语句

      确认你的导入语句是否正确。如果是非静态成员,则需要改为静态导入。
  2. 修改导入语句

      如果你需要导入的是一个类或接口中的静态成员,则应该使用 static 关键字进行导入。

2.3.3 c.java:[38,56] 程序包a1.a2.ax不存在     

2.3.3.1 原因 :mvn test 依赖于 mvn compile 的结果;

如果 mvn compile 没有成功执行,测试代码编译所需的主代码将不可用,从而导致 “找不到符号” 错

2.3.3.2  解决:

2.3.4 d.java:[98,9] 方法不会覆盖或实现超类型的方法   

2.3.4.1 原因 :

意味着在子类中定义了一个方法,但该方法并没有正确地覆盖(override)或实现(implement)其超类(父类)或接口中的相应方法。

  1. 方法签名不同

      方法名、返回类型、参数列表必须完全一致。
  2. 访问修饰符不匹配

      覆盖的方法必须具有至少与超类方法相同或更宽松的访问级别。例如,如果超类方法是 public 的,那么子类覆盖的方法也必须是 public 的。
  3. 未正确标注 @Override 注解

      使用 @Override 注解可以确保方法确实覆盖了超类的方法。如果没有正确使用注解,IDE 可能不会提示错误。

2.3.4.2  解决:

  1. 检查方法签名

      确保方法名、返回类型、参数列表与超类的方法完全一致。
  2. 检查访问修饰符

      确保访问修饰符至少与超类方法相同或更宽松。
  3. 使用 @Override 注解

      使用 @Override 注解可以确保方法确实覆盖了超类的方法。

2.4 install相关

2.4.1报错解决---科学上网

但是这个报错也没必要解决,如果只是对部分模块进行测试的话;

[ERROR] I/O error for image [registry-1.docker.io/library/eclipse-temurin]:

[ERROR]     Connect to production.cloudflare.docker.com:443 [production.cloudflare.docker.com/199.16.156.11, production.cloudflare.docker.com/2a03:2880:f102:183:face:b00c:0:25de] failed: 网络不可达

(connect failed)

2.4.2 install时: Could not resolve dependencies  xx 无法解析依赖;

[ERROR] Failed to execute goal on project abc: Could not resolve dependencies for project org.apache.x:abc:jar:3.7.6-SNAPSHOT:

 https://repository.apache.org/snapshots was cached in the local repository, resolution will not be reattempted until the update interval of apache.snapshots has elapsed or updates are forced -> [Help 3]

2.4.2.1 原因

原因在于 Maven 试图从远程仓库 https://repository.apache.org/snapshots 下载依赖项,但由于某种原因未能成功,导致 Maven 从本地仓库缓存中读取,而不是重新尝试解析。

2.4.2.2 解决
  1. 清理本地仓库缓存:确保本地仓库中没有错误的缓存。
  2. 强制更新依赖项:使用 -U 选项强制更新所有依赖项。
  3. 检查依赖版本:确保依赖版本正确并在远程仓库中可用。
  4. 更新远程仓库配置:确保远程仓库配置正确且可访问。
  5. 检查远程仓库状态:手动检查远程仓库的状态。
  6. 手动下载依赖项:如果远程仓库暂时不可用,可以手动下载依赖项并安装到本地仓库。
1)强制重新更新:
mvn clean install -U
2)更新远程仓库地址

可能 远程仓库的地址有问题 / 远程仓库暂时不可用 --- 可以尝试更新远程仓库的地址。

3)检查依赖版本

确保你的项目中定义的依赖版本正确且在远程仓库中可用。

如果依赖项的版本是 SNAPSHOT,则需要确保远程仓库支持 SNAPSHOT 版本的更新

假设你的 pom.xml 文件中包含了对 abc 的依赖:

<dependencies>
    <dependency>
        <groupId>org.apache.x</groupId>
        <artifactId>abc</artifactId>
        <version>3.7.6-SNAPSHOT</version>
    </dependency>
    <!-- 其他依赖 -->
</dependencies>
3)-a 检查远程仓库状态

如果你怀疑远程仓库的状态有问题,可以尝试手动访问仓库地址:

curl https://repository.apache.org/snapshots/org/apache/x/abc/3.7.6-SNAPSHOT/

如果返回的是仓库的索引文件,说明仓库是可访问的;

如果返回错误信息,则可能是远程仓库暂时不可用。

3)-b 使用 SNAPSHOT 版本

对于 SNAPSHOT 版本的依赖,需要确保远程仓库支持自动更新。你可以通过以下方式配置:

  1. pom.xml 中配置

    <repositories>
        <repository>
            <id>apache.snapshots</id>
            <name>Apache Snapshot Repository</name>
            <url>https://repository.apache.org/snapshots</url>
            <snapshots>
                <enabled>true</enabled>
                <updatePolicy>always</updatePolicy>
            </snapshots>
        </repository>
    </repositories>
  2. 在全局 settings.xml 中配置

    <servers>
        <server>
            <id>apache.snapshots</id>
            <username>your_username</username>
            <password>your_password</password>
        </server>
    </servers>
3)-c 手动下载依赖项

如果远程仓库暂时不可用,可以尝试手动下载依赖项并放置在本地仓库中:

  1. 下载依赖项

    你可以手动下载 .jar 文件和对应的 .pom 文件,并放置在本地仓库中。

  2. 安装依赖项

    使用 Maven 安装插件手动安装依赖项:

    mvn install:install-file \
        -Dfile=path/to/dependency.jar \
        -DpomFile=path/to/pom.xml \
        -DgroupId=org.apache.x \
        -DartifactId=abc \
        -Dversion=3.7.6-SNAPSHOT \
        -Dpackaging=jar

2.4.3 依赖有问题可以尝试 mvn clean install  -U 

【-U 选项用于强制 Maven 更新所有的快照依赖(SNAPSHOT dependencies)。通常【即不加-U】,Maven 会使用本地缓存的旧快照版本】

 三、运行smartut 工具 的 Q&A:

3.1

-Q: -class 后面写 target.classes.demo.A  ----为什么这样写类不行?

-A: class后跟的应该是“包.类”, 这个example. target不属于包名, 只能说是路径example/target

Demo才是包。Demo.A才是其中的类

3.2 Java -jar  ./smartut.jar   -h查看命令使用帮助

SmartUt 的命令行选项有助于设置和运行测试生成。以下是主要选项的解释:

-base_dir <arg>: 设置工作目录,测试和报告将保存在此目录中;

-class <arg>: 指定要生成测试的目标类,需提供完整的类名(如 org.foo.SomeClass);

-client_remote_debug <arg> 和 -master_remote_debug <arg>: 用于客户端和主进程的远程调试;

-continuous <arg>: 运行连续测试生成,参数可以是 EXECUTE, INFO, CLEAN。

-criterion <arg>: 指定测试生成的目标标准,可以用冒号分隔列出多个标准。

-D <property=value>: 设置系统属性。

-generateMOSuite, -generateRandom, -generateSuite, -generateSuiteUsingDSE, -generateTests: 指定不同的测试生成方法。

-heapdump: 当客户端 VM 发生内存溢出错误时创建堆转储。

-inheritanceTree: 在设置过程中缓存继承树。

-junit <arg>: 设置 JUnit 的前缀。

-libraryPath <arg>: 设置项目测试的本地库路径。

-listClasses: 列出指定类路径/前缀中的可测试类。

-listParameters: 列出可以用 -D 设置的所有参数。

-measureCoverage: 测量现有测试用例的覆盖率。

-mem <arg>: 设置客户端进程的堆大小(以 MB 为单位)。

-parallel <n i x>: 启动并行运行,n 是客户端数,i 是迭代频率,x 是通信率。

-prefix <arg>: 设置目标包前缀,用于测试生成。

-printStats: 打印类信息和可覆盖的目标。

-projectCP <arg>: 设置项目及其依赖项的类路径。

-seed <arg>: 设置随机数生成器的种子。

-setup <arg>: 使用属性文件创建 smartut 文件。

-smartutCP <arg>: 设置 SmartUt jar 文件的类路径。

-startedByCtg: 确定当前进程是否由 CTG 进程启动。

-target <arg>: 设置目标类路径,指定 jar 文件或包含 .class 文件的文件夹。

-writeDependencies <arg>: 将目标类的依赖项写入文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2172652.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何实现工业设备联网?天拓四方

一、引言 随着信息技术的快速发展&#xff0c;工业设备联网已成为推动工业4.0和智能制造的核心技术之一。工业设备联网通过将传统的工业设备与互联网、云计算、大数据等技术相结合&#xff0c;实现了设备之间的互联互通&#xff0c;数据共享与智能分析&#xff0c;极大地提高了…

【计算机网络 - 基础问题】每日 3 题(二十七)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/fYaBd &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏&…

机器学习-KNN

KNN&#xff1a;K最邻近算法&#xff08;K-Nearest Neighbor,KNN&#xff09; 用特征空间中距离待分类对象的最近的K个样例点的类别来预测。 投票法&#xff1a;K 个样例的对数类别。 k1:最近邻分类 k 通常是奇数&#xff08;因为我们根据这个K数据判断类别&#xff0c;如果…

敏感字段加密 - 华为OD统一考试(E卷)

2024华为OD机试(E卷+D卷+C卷)最新题库【超值优惠】Java/Python/C++合集 题目描述 【敏感字段加密】给定一个由多个命令字组成的命令字符串: 1、字符串长度小于等于127字节,只包含大小写字母,数字,下划线和偶数个双引号; 2、命令字之间以一个或多个下划线 进行分割; 3、可…

Spring Cloud Gateway接入WebSocket:实现实时通信

在现代的微服务架构中&#xff0c;实时通信变得越来越重要。Spring Cloud Gateway作为Spring Cloud生态中的API网关&#xff0c;提供了动态路由、监控、弹性、安全等功能。本文将介绍如何通过Spring Cloud Gateway接入WebSocket&#xff0c;实现服务之间的实时通信。 为什么需…

1. AOSP源码导入到AndroidStudio

1. AOSP源码导入到AndroidStudio 原文地址:http://www.androidcrack.com/index.php/archives/6/ ⚠️ 在执行一下操作前, 请先完整的编译一次系统, 若不清楚如何编译系统. 请访问下面文章 http://www.androidcrack.com/index.php/archives/3/ 1. 生成idegen.jar source build…

Python中流行的开源OCR项目

以下是一些Python中流行的开源OCR项目&#xff1a; PaddleOCR&#xff1a;由百度开发的OCR工具库&#xff0c;支持多种语言的文字识别&#xff0c;包括中英文&#xff0c;同时支持倾斜、竖排等多种方向的文字识别。它提供了超轻量级的PP-OCRv3模型&#xff0c;适合在资源受限的…

EasyExcel使用介绍

EasyExcel使用 1、EasyExcel介绍 1.1 官网介绍 传统操作Excel大多都是利用Apach POI进行操作的&#xff0c;但是POI框架并不完善&#xff0c;使用过程非常繁琐且有较多的缺陷&#xff1a; 动态操作Excel非常繁琐,对于新手来说&#xff0c;很难在短时间内上手;读写时需要占用…

助力企业信息化,开源免费工作流引擎AntFlow推出重榜功能tidb支持,为工作流引擎水平扩展提供无限可能

在现代企业管理中&#xff0c;流程审批的高效性直接影响到工作的流畅度与生产力。选择一款高效的、现代的、合适企业办公特点的流程引擎到头重要。AntFlow是一款结合中国式办公精心打造的、设计上仿钉钉的工作流引擎。后端即可嵌入到现有业务系统&#xff0c;也可以做为独立的流…

打造未来社交:区块链社交DAO的颠覆性开发之路

随着区块链技术的不断发展&#xff0c;去中心化自治组织&#xff08;DAO&#xff09;逐渐成为一种创新的社交模式。结合区块链的透明性和不可篡改性&#xff0c;社交DAO为用户提供了一种全新的参与和治理方式&#xff0c;重塑了社交网络的构建与互动方式。本文将探讨区块链社交…

【工具-VMware Workstation-ubuntu】

VMware Workstation-ubuntu ■ ubuntu 和 win11 共享文件夹出现在/mnt/hgfs 目录下。■■■■ ■ ubuntu 和 win11 共享文件夹出现在/mnt/hgfs 目录下。 执行 vmware-hgfsclient 显示有共享文件夹。ls 却查看不到 执行 sudo vmhgfs-fuse .host:/ /mnt/hgfs -o nonempty -o all…

828华为云征文|部署漫画阅读器和管理器 Teemii

828华为云征文&#xff5c;部署漫画阅读器和管理器 Teemii 一、Flexus云服务器X实例介绍二、Flexus云服务器X实例配置2.1 重置密码2.2 服务器连接2.3 安全组配置2.4 Docker 环境搭建 三、Flexus云服务器X实例部署 Teemii3.1 Teemii 介绍3.2 Teemii 部署3.3 Teemii 使用 四、总结…

英伟达新显卡RTX 5090和5080曝光,性能差距惊人!涨价已成定局?

你是不是也觉得现在的电脑游戏越来越吃配置了&#xff1f;别急&#xff0c;英伟达即将发布的两款新显卡 RTX 5090 和 RTX 5080 可能会成为你的救星。不过&#xff0c;这两款显卡之间的性能差距可不是一星半点&#xff0c;而且价格可能也会让人咋舌。想知道更多细节吗&#xff1…

Python批量处理客户明细表格数据,挖掘更大价值

批量处理 .xls 数据并进行归类分析以挖掘内在价值&#xff0c;通常涉及以下步骤&#xff1a; 读取数据&#xff1a;使用 pandas 库读取 .xls 文件。数据清洗&#xff1a;处理缺失值、异常值、重复值等。数据转换&#xff1a;对数据进行必要的转换&#xff0c;如日期格式统一、…

debian linux 只安装mysql client

查询系统版本 执行cat /etc/os-release 可以看到是debian11 rootservice-headquarters-hg-self-data-report-844ccf78b-6ls7t:/mysql#cat /etc/os-release PRETTY_NAME"Debian GNU/Linux 11 (bullseye)" NAME"Debian GNU/Linux" VERSION_ID"11&quo…

【MySQL】常见的SQL优化方式(一)

目录 1、插入数据 &#xff08;1&#xff09;批量插入 &#xff08;2&#xff09;手动提交事务 &#xff08;3&#xff09;主键顺序插入 2、主键优化 &#xff08;1&#xff09;页分裂 &#xff08;2&#xff09;页合并 3、order by 优化 &#xff08;1&#xff09;排…

微服务Redis解析部署使用全流程

1、什么是Redis Redis&#xff08;Remote Dictionary Server &#xff09;&#xff0c;即远程字典服务&#xff0c;是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库&#xff0c;并提供多种语言的API。 可以理解成一个大容量的map。…

500. 键盘行 哈希表 力扣 Python 难度指数:3

500. 键盘行 已解答 简单 相关标签 相关企业 给你一个字符串数组 words &#xff0c;只返回可以使用在 美式键盘 同一行的字母打印出来的单词。键盘如下图所示。 美式键盘 中&#xff1a; 第一行由字符 "qwertyuiop" 组成。第二行由字符 "asdfghjkl"…

GIS专业在课余应该学计算机还是遥感?

有网友提问&#xff1a; 绝大数人给出了&#xff0c;强有力的建议&#xff0c;就是冲计算机 1、从学习条件上看本科阶段&#xff0c;学计算机编程&#xff0c;你只需要有台电脑&#xff0c;装一些编程软件&#xff0c;上git上找一些代码&#xff0c;b站找一些教程就可以大学特…

open-resty 服务安装kafka插件

从github下载 作者&#xff1a;程序那点事儿 日期&#xff1a;2023/11/16 22:01 lua-resty-kafka 插件安装 下载代码后直接解压 mkdir -p /usr/local/openresty/modules/ #创建一个目录&#xff0c;存放lua插件cd /usr/local/openresty/modules/ #进入目录rz -y #上传lua插件…