-
【问题描述】编译jansi 2.0报A fatal error has been detected by the Java Runtime Environment错误,详细报错如下【解决方法】修改pom.xml文件将189行注释然后再执行mvn install编译;
-
# 0 概述 根据gRPC协议生成客户端与服务端代码 步骤: 一、使用protoc buffer生成gRPC通信代码和消息体; 二、根据gRPC通信代码中的Service写Service实现类; 三、根据Service实现类实现服务端代码与客户端代码; gRPC将通信管道、请求与响应的消息体编码序列化及反序列化都通过proto buffer自动生成了,开发者只需要将生成的gRPC的基础实现类xxxGrpc.xxxImplBase扩展为一个实现类,在该实现类中说明要对客户端请求体做哪些事情,以及定义响应体的格式。使用gRPC的接口与Service实现类实现服务端代码与客户端代码。 # 1 使用protoc buffer生成gRPC通信代码和消息体 使用maven的grpc依赖与插件生成代码。 步骤: 1. 将.proto协议文件放置在java/main/proto目录下; 2. 配置pom.xml文件中的依赖与插件(根据官方文档) 3. 执行mvn clean install 这样grpc通信部分代码会生成在target/generated-sources/protobuf/grpc-java下,命名为xxxxGrpc.java,消息体部分代码会生成在target/generated-sources/protobuf/java下,命名在.proto文件中指定。 # 2 根据生成的代码编写Service实现类 协议文件.proto一般只说明方法名称、gRPC服务类型、请求与响应的消息体类型,但是具体根据请求得到什么样子的响应就需要自己编写Service实现类。 步骤: 1. 将第1步生成的通信代码与消息体代码放在一个另起的工程里; 2. 在这个另起的工程里定义一个xxxImpl的实现类,继承gRPC通信代码中的xxxGrpc.xxxImplBase实现类; 3. 在新的实现类中通过gRPC的newBuilder() API处理request与response。 # 3 实现服务端代码 服务端的代码主要是通过上一步定义的Service实现类结合gRPC API完成编写。 步骤: 1. 定义gRPC Server; 2. 使用gRPC的ServerBuilder API与Service实现类xxxImpl给定义好的gRPC Server赋值; 3. 定义gRPC Server中的start() stop()以及主启动main方法。 # 4 实现客户端代码 客户端的代码主要是通过定义gRPC的channel和stub发起请求的查询、通信、查询、序列化/反序列化的一系列操作,后面的这些操作开发者不感知。 步骤: 1. 使用gRPC的NettyChannelBuilder API定义channel; 2. 使用生成的通信代码xxxGrpc.xxxBlockingStub定义stub; 3. 定义gRPC中的方法,该方法与stub中的方法一致; 4. 定义客户端主启动main方法实施调用。 # 附录: gRPC官方文档:https://grpc.io/docs/what-is-grpc/core-concepts/ Proto3语法:https://developers.google.com/protocol-buffers/docs/proto3
-
日常任务中的发布环节的初始化Maven私有依赖库任务一直没有完成,今天搜文档做功课,多次尝试后终于做出来了!首先点击任务后,跳转至2018年的时候,参加活动已经创建了,那么任务为啥没有识别呢?搜了下,没有删除的地方,那是需要传个库上去么?试试!按照文档,发布组件到依赖库刷新会员中心后,任务依赖没有完成,看来不是要这个。那么私有依赖库这里没有删除的地方,新建不了怎么办呢?换个区域试试,北京四还啥都没有呢。
-
敏捷开发和Devops给测试提出了相当高的要求,自动化测试工具也应运而生。从目前笔者检索到的资料来看,自动化测试工具有以下几种:(1)JUnit——Java语言的单元测试框架,另外还有衍生的NUnit(.NET的单元测试框架)等xUnit家族,如CPPUnit等等。(2)Postman——强大的Web API & HTTP 请求调试工具。(3)Selenium——Web应用的自动化测试工具,用来模拟用户在浏览器的操作。(4)Appnium——移动端(支持Android和IOS)的自动化测试工具。(5)Robot Framework——功能自动化测试框架。这是某些大厂常用的测试框架。(6)HttpClient——支持HTTP协议的客户端程序包。(7)TestNG——接口自动化测试工具,TestNG在JUNIT和NUnit的基础上增加了很多功能,支持单元自动化测试,还可以集成Selenium,Appnium和HttpClient等框架进行各种类型的自动化测试。(8)RestAssured——基于REST服务的测试过程的Java DSL。可以方便的处理REST请求并处理响应信息。(9)JMeter——基于Java的压力测试工具。(10)LoadRunner——老牌的压力测试工具。。是个收费的商业软件。我们看到,华为云推出了很多API服务,我们就以API测试最常见的TestNG,通过实例对API测试进行讲解,以此来理解一下TestNG的用法。以笔者常用的eclipse为例。首先我们需解决安装TestNG的问题。由于众所周知的原因,我们需要先配置maven的阿里云镜像(当然是否也可以用华为云镜像,读者也可以试一下)修改Users/zhang/.m2/settings.xml文件:我们建立一个Maven工程,并在工程内修改POM.xml文件如下:这样,Maven会自动下载TestNG依赖包。我们再通过eclipse的菜单Install New Software安装TestNG插件:在work with栏输入地址:http://dl.bintray.com/testng-team/testng-eclipse-release/ 并按回车键,系统会检索出TestNG:选中然后安装即可。我们在src/main/java的相关package下新建个HelloTest.java的文件,内容如下:package com.zhanghui.testing; import org.testng.annotations.Test; public class HelloTest { @Test public void testCase1() { System.out.println("Hello Zhanghui!"); } }在代码上点击右键-》RunAs=》TestNG Test系统控制台会出现以下内容:表明TestNG安装和测试成功。Suite表示测试套件,是对多个测试类进行组合而成的suite.比如用于测试基本流程的套件,用于测试促销功能的套件,甚至用于进行冒烟测试的套件等等。其中,TestNG还支持如下注解:@BeforeSuite @AfterSuite注解——在该套件(Suite)的所有测试之前/后运行,仅运行一次@BeforeClass和 @AfterClass注解——在调用当前类的第一个测试方法之前/后运行,仅运行一次@BeforeTest和@AfterTest注解——在属于test标签内的类的所有测试方法运行之前/后运行@BeforeMethod和@AfterMethod注解——在每个测试方法之前/后都运行@BeforeGroups和@AfterGroup注解——在每个group之前/后运行我们用实例示范一下:package com.zhanghui.testing; import org.testng.Assert; import org.testng.annotations.AfterClass; import org.testng.annotations.AfterGroups; import org.testng.annotations.AfterMethod; import org.testng.annotations.AfterSuite; import org.testng.annotations.AfterTest; import org.testng.annotations.BeforeClass; import org.testng.annotations.BeforeGroups; import org.testng.annotations.BeforeMethod; import org.testng.annotations.BeforeSuite; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; public class BeforeAfterTest { @Test(groups="group1") public void test1() { System.out.println("test1 from group1"); Assert.assertTrue(true); } @Test(groups="group1") public void test11() { System.out.println("test11 from group1"); Assert.assertTrue(true); } @Test(groups="group2") public void test2() { System.out.println("test2 from group2"); Assert.assertTrue(true); } @Test(groups="group2") public void test21() { System.out.println("test21 from group2"); Assert.assertTrue(true); } @BeforeTest public void beforeTest() { System.out.println("beforeTest"); } @AfterTest public void afterTest() { System.out.println("afterTest"); } @BeforeClass public void beforeClass() { System.out.println("beforeClass"); } @AfterClass public void afterClass() { System.out.println("afterClass"); } @BeforeSuite public void beforeSuite() { System.out.println("beforeSuite"); } @AfterSuite public void afterSuite() { System.out.println("afterSuite"); } //只对group1有效 @BeforeGroups(groups="group1") public void beforeGroups() { System.out.println("beforeGroups1"); } //只对group1有效 @AfterGroups(groups="group1") public void afterGroups() { System.out.println("afterGroups1"); } @BeforeMethod public void beforeMethod() { System.out.println("beforeMethod"); } @AfterMethod public void afterMethod() { System.out.println("afterMethod"); } }结果如下:[RemoteTestNG] detected TestNG version 7.3.0 beforeSuite beforeTest beforeClass beforeMethod test1 from group1 afterMethod beforeMethod test11 from group1 afterMethod beforeMethod test2 from group2 afterMethod beforeMethod test21 from group2 afterMethod afterClass afterTest PASSED: test1 PASSED: test11 PASSED: test2 PASSED: test21 =============================================== Default test Tests run: 4, Failures: 0, Skips: 0 =============================================== afterSuite =============================================== Default suite Total tests run: 4, Passes: 4, Failures: 0, Skips: 0 ===============================================我们来做个简单的分析:Suite>Test>Class>Method. TestNG会根据本class中的以上顺序依次完成相关的Before注解的执行,然后在测试结束时依次倒过来完成After注解的执行。它也会根据每个 @Test注解的group,依次将本group下的所有test执行完,再执行下一个group.
-
maven选择只有 jdk11, jdk14的项目无法编译,能否增加支持一下,非常感谢 ### 异常 `java.lang.IllegalArgumentException: invalid flag: --release` ### pom.xml 片段 ``` org.apache.maven.plugins maven-compiler-plugin ${maven-compiler-plugin} 14 14 14 true --enable-preview -Amapstruct.suppressGeneratorTimestamp=true -Amapstruct.suppressGeneratorVersionInfoComment=true -Amapstruct.verbose=true org.projectlombok lombok ${lombok.version} org.mapstruct mapstruct-processor ${org.mapstruct.version} ```
-
## 1 - 问题描述 ### 1.1 背景说明 为客户提供样例代码,测试中需要对 Java + Scala 编写的 Maven 项目进行编译打包,由于 依赖了部分外部 jar 包,也就是有部分 jar 包没有在 pom.xml 中指定,导致编译失败。 ### 1.2 存在的问题 原有样例代码中,pom.xml 引入了 `org.scala-tools.maven-scala-plugin` 插件(),用于打包 Scala 项目,其配置方式如下: ```xml <plugin> <groupId>org.scala-tools</groupId> <artifactId>maven-scala-plugin</artifactId> <version>2.15.2</version> <configuration> <recompileMode>modified-only</recompileMode> </configuration> <executions> <execution> <id>main-scalac</id> <phase>process-resources</phase> <goals> <goal>add-source</goal> <goal>compile</goal> </goals> </execution> </executions> </plugin> ``` 该插件从2011年起就没有更新过,官网地址也已失效,无法找到有效的支持文档。 ## 2 - 问题解决 ### 2.1 方法一:通过scope=system引入外部依赖 Maven 支持在 dependency 中引入系统依赖,其中 `scope = system` 与 `scope = provided` 的依赖范围一致:**只在编译和测试范围内有效,运行时范围内无效**。具体配置示例如下: ```xml <dependency> <groupId>com.huawei.bigdata</groupId> <artifactId>spark-client</artifactId> <scope>system</scope> <systemPath>${project.basedir}/libs/spark-client.jar</systemPath> </dependency> ``` 将所有的外部 jar 包都通过这种方式引入,即可正常编译。 但由于外部依赖包通常都会比较多,这种方式维护成本太高,所以不予考虑。 ### 2.2 方法二:通过新插件指定外部依赖 经过搜索,找到了一款新插件:,pom.xml 中这样配置: ```xml <plugin> <groupId>net.alchim31.maven</groupId> <artifactId>scala-maven-plugin</artifactId> <version>3.2.1</version> <executions> <execution> <id>scala-compile-first</id> <phase>process-resources</phase> <goals> <goal>add-source</goal> <goal>compile</goal> </goals> </execution> <execution> <id>scala-test-compile</id> <phase>process-test-resources</phase> <goals> <goal>add-source</goal> <goal>testCompile</goal> </goals> </execution> </executions> <configuration> <args> <!-- 编译时使用 libs 目录下的 jar 包,通过 mvn scala:help 查看说明 --> <arg>-extdirs</arg> <arg>${project.basedir}/libs</arg> </args> <scalaVersion>2.11.8</scalaVersion> </configuration> </plugin> ``` 通过 -extdirs 参数,指定外部依赖的 jar 包。 其他参数的查看:在终端窗口中,通过命令 mvn scala:help 查看主要配置项参数,例如: ![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202008/04/165332edbzm0f9p28he0vu.png) 更详细的使用说明,请参考: **编译、打包用法:** (1) 直接在 IDEA 的 Maven -> Project -> Lifecucle -> compile | package 进行编译或打包; (2) 在终端窗口,通过如下命令进行编译打包: ```bash mvn clean scala:compile compile package ``` 说明:在 compile 前加 scala:compile,这是该插件提供的选项,表示:先编译scala,再编译java,最后打包。
-
这个错误是出现了什么问题,该如何解决呀?
-
您好,公司内部Nexus私有仓库可以代理华为Maven仓库么?像阿里云的公开Maven仓库一样。如是,代理地址是 https://mirrors.huaweicloud.com/repository/maven/ 么? Nexus 2还支持么? 谢谢。
-
【使用说明】仓库地址为:https://mirrors.huaweicloud.com/kunpeng/yum/el/7/aarch64/Packages/大数据的下载地址为:https://mirrors.huaweicloud.com/kunpeng/yum/el/7/aarch64/Packages/bigdata/Web的下载地址为:https://mirrors.huaweicloud.com/kunpeng/yum/el/7/aarch64/Packages/web/分布式存储的下载地址为:https://mirrors.huaweicloud.com/kunpeng/yum/el/7/aarch64/Packages/ceph/数据库的下载地址为:https://mirrors.huaweicloud.com/kunpeng/yum/el/7/aarch64/Packages/database/云&虚拟化的下载地址为:https://mirrors.huaweicloud.com/kunpeng/yum/el/7/aarch64/Packages/cloud/原生应用的下载地址为:https://mirrors.huaweicloud.com/kunpeng/yum/el/7/aarch64/Packages/native/1、备份配置文件:mv /etc/yum.repos.d/ /etc/yum.repos.d-bak2、将新配置写入repo文件:mkdir /etc/yum.repos.decho -e "[kunpeng]\nname=CentOS-kunpeng - Base - mirrors.huaweicloud.com\nbaseurl=https://mirrors.huaweicloud.com/kunpeng/yum/el/7/aarch64/\ngpgcheck=0\nenabled=1" >/etc/yum.repos.d/CentOS-Base-kunpeng.repo3、更新yum源配置:yum clean all # 清除系统所有的yum缓存yum makecache # 生成yum缓存yum update【精华帖汇总】:提供鲲鹏解决方案的移植、部署、调优端到端使用指导和一站式资源获取。请选择解决方案大数据Web分布式存储数据库云&虚拟化原生应用大数据精华帖汇总:https://bbs.huaweicloud.com/forum/thread-27853-1-1.htmlWeb精华帖汇总:https://bbs.huaweicloud.com/forum/thread-26092-1-1.html分布式存储精华帖汇总: https://bbs.huaweicloud.com/forum/thread-26748-1-1.html数据库精华帖汇总:https://bbs.huaweicloud.com/forum/thread-26495-1-1.html云&虚拟化精华帖汇总:https://bbs.huaweicloud.com/forum/thread-26458-1-1.html原生应用精华帖汇总:https://bbs.huaweicloud.com/forum/thread-28135-1-1.html【相关网址】鲲鹏社区:https://www.huaweicloud.com/kunpeng/鲲鹏论坛:https://bbs.huaweicloud.com/forum/forum-923-1.html鲲鹏文档中心:https://support.huaweicloud.com/kunpeng/index.html免责声明:https://mirrors.huaweicloud.com/kunpeng/yum/el/7/aarch64/下载使用前必读_华为开源镜像站法律声明_重要.pdf
-
maven仓中如下两个路径都是lz4-java -*.jar包的归档路径,存在重复且需要确认正确的归档路径(lz4跟lz4-java对应的jar是同一个):https://mirrors.huaweicloud.com/repository/maven/kunpeng/net/jpountz/lz4/lz4/https://mirrors.huaweicloud.com/repository/maven/kunpeng/org/lz4/lz4-java/
-
当前maven仓存在重复disclaimer-1.0.0.jar包归档路径:https://mirrors.huaweicloud.com/repository/maven/kunpeng/readme/disclaimer/1.0.0/https://mirrors.huaweicloud.com/repository/maven/kunpeng/Readme/Disclaimer/1.0.0/另外:https://mirrors.huaweicloud.com/repository/maven/kunpeng/readme/readme/1.0/readme-1.0.jar 路径不存在;https://mirrors.huaweicloud.com/repository/maven/kunpeng/readme/readme/1.0.0/readme-1.0.0.jar跟https://mirrors.huaweicloud.com/repository/maven/kunpeng/readme/disclaimer/1.0.0/disclaimer-1.0.0.jar是同一个jar包;
上滑加载中
推荐直播
-
算子工具性能优化新特性演示——MatMulLeakyRelu性能调优实操
2025/01/10 周五 15:30-17:30
MindStudio布道师
算子工具性能优化新特性演示——MatMulLeakyRelu性能调优实操
回顾中 -
用代码全方位驱动 OBS 存储
2025/01/14 周二 16:30-18:00
阿肯 华为云生态技术讲师
如何用代码驱动OBS?常用的数据管理,对象清理,多版本对象访问等应该如何编码?本期课程一一演示解答。
即将直播 -
GaussDB数据库开发
2025/01/15 周三 16:00-17:30
Steven 华为云学堂技术讲师
本期直播将带你了解GaussDB数据库开发相关知识,并通过实验指导大家利用java基于JDBC的方式来完成GaussD数据库基础操作。
去报名
热门标签