腾讯云Java SDK maven使用方式的详细介绍

我的笔记步骤结束后有详细过程

笔记

代码语言:javascript
复制
0、搭建vs code java环境,调通mvn

1、命令行mvn创建test项目
mvn archetype:generate -DgroupId=com.testing -DartifactId=test -Dversion=1.0.0 -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeCatalog=internal

2、安装依赖到本地

cd test
添加依赖到pom.xml
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>

&lt;dependency&gt;
  &lt;groupId&gt;com.squareup.okhttp3&lt;/groupId&gt;
  &lt;artifactId&gt;okhttp&lt;/artifactId&gt;
  &lt;version&gt;3.3.0&lt;/version&gt;
&lt;/dependency&gt;

在命令行中,导航到项目目录,然后运行以下命令以下载并安装新添加的依赖项
mvn clean install

3、改文件名跟类名要匹配
C:\Users\Administrator\test\src\main\java\com\testing
比如文件名是Chaxunyure.java,那么public class APIv3要改成public class Chaxunyure
文件开头第一句加package com.testing;

4、编译
mvn compile

5、执行
mvn exec:java -Dexec.mainClass="com.testing.App"
mvn exec:java -Dexec.mainClass="com.testing.Chaxunyure"
mvn exec:java -Dexec.mainClass="com.testing.PreheatSnapshot"
mvn exec:java -Dexec.mainClass="com.testing.StopPreheatedSnapshots"
6、编译和执行可以2步连在一起搞
mvn compile exec:java -Dexec.mainClass="com.testing.App"
mvn compile exec:java -Dexec.mainClass="com.testing.Chaxunyure"
mvn compile exec:java -Dexec.mainClass="com.testing.PreheatSnapshot"
mvn compile exec:java -Dexec.mainClass="com.testing.StopPreheatedSnapshots"
7、不自动结束,2个办法
①带参数-Dexec.cleanupDaemonThreads=false
mvn compile exec:java -Dexec.mainClass="com.testing.App" -Dexec.cleanupDaemonThreads=false
mvn compile exec:java -Dexec.mainClass="com.testing.Chaxunyure" -Dexec.cleanupDaemonThreads=false
mvn compile exec:java -Dexec.mainClass="com.testing.PreheatSnapshot" -Dexec.cleanupDaemonThreads=false
mvn compile exec:java -Dexec.mainClass="com.testing.StopPreheatedSnapshots" -Dexec.cleanupDaemonThreads=false
②给main函数最后一句增加System.exit(0);

1、配置环境

①比较VS2019和VS Code,Visual Studio 2019支持C#/C++/Python/Node.js,安装VS2019,腾讯云好几种SDK都能使用了,真方便,但是不支持Java,而VS Code轻量支持Java,够用了

https://code.visualstudio.com/docs/java/java-faq#_will-this-be-available-for-visual-studio

这个链接介绍说Visual Studio不会支持Java,VS Code对Java是轻量级支持

Currently we don't plan to extend the Java support to Visual Studio. There's already great IDEs for Java and we're focusing on VS Code to provide a lightweight experience in a polyglot editor.

②安装VS Code和Java Extension Pack

如下图,Java Extension Pack是包含maven的,安装好Java Extension Pack和openJDK11后,

代码语言:javascript
复制
启动一个java空白项目,然后就会自动把maven装全
启动一个java空白项目,然后就会自动把maven装全
启动一个java空白项目,然后就会自动把maven装全

然后手动把mvn.cmd的目录加入环境变量,搜mvn.cmd找到路径如下(以你搜到的为准)

例如:C:\Users\Administrator.m2\wrapper\dists\apache-maven-3.6.2-bin\795eh28tki48bv3l67maojf0ra\apache-maven-3.6.2\bin</p>

例如:C:\Users\HASEE.m2\wrapper\dists\apache-maven-3.6.3-bin\1iopthnavndlasol9gbrbg6bf2\apache-maven-3.6.3\bin</p>

运行systempropertiesadvanced添加环境变量

Java Extension Pack的下载地址:https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-pack (这个地址实际是从搜索得来的,访问https://marketplace.visualstudio.com/ 搜vscjava.vscode-java-pack得到)

Java Extension Pack的介绍:Java Extension Pack is a collection of popular extensions that can help write, test and debug Java applications in Visual Studio Code. Check out Java in VS Code to get started.

这个链接很关键:https://code.visualstudio.com/docs/languages/java 打开直接下载Visual Studio Code Java Pack Installer进行安装会比较慢,建议先单独下载VS Code安装,然后再安装Java Extension Pack,最后再下载安装OpenJDK11

两种办法,一种直接访问上面的链接点install按钮会调用vs code打开后是下图这样,就行点install即可

另一种是打开vs code → welcome界面 → getting started → browse language extensions → 搜索 vscjava.vscode-java-pack

安装OpenJDK11参考Lightweight Mode, Maven Support, Java Package, and Dependency Management in Visual Studio Code

点下图中的Run a Command... 然后输入Java: Configure Java Runtime 点一下,在出来的结果里点一下蓝色的Java: Configure Java Runtime会出现openJDK配置的界面

2、命令行mvn创建test项目

mvn archetype:generate -DgroupId=com.testing -DartifactId=test -Dversion=1.0.0 -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeCatalog=internal

加粗标记的3个自己填,第1个就是域名机构在前,第2个很重要,是整个项目的目录

如果遇到Y::回车即可

最后一个-DarchetypeCatalog=internal非常重要,否则可能卡住不动

artifactId等于什么,一会儿就得进什么目录

3、项目配置调试排错

进到第一步创建的test项目(目录),里面有个pom.xml,编辑pom.xml,增加下面2段话

第一段话里,properties部分的maven.compiler.source和maven.compiler.target的11是我jdk的大版本号,你的是几就写几,我写成11确实不报错了

其实我用VS Code的向导创建了一个maven项目看了下pom.xml的里properties,maven.compiler.source和maven.compiler.target是1.7,写成1.7也不报错了

结合报错信息“请使用 1.6 或更高版本”,让人马上联想到写成1.7可能更正确

<properties>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<maven.compiler.source>11</maven.compiler.source>

<maven.compiler.target>11</maven.compiler.target>

</properties>

<dependency>

<groupId>com.tencentcloudapi</groupId>

<artifactId>tencentcloud-sdk-java</artifactId>

<version>3.1.13</version>

</dependency>

第2段话注意塞到 <dependencies> </dependencies> 里面,里面的版本号以你在这里选取的为准https://github.com/TencentCloud/tencentcloud-sdk-java/releases

4、mvn install 安装依赖到本地

命令行cd test进到第一步创建的test项目(目录)

mvn install -DgroupId=com.tencentcloudapi -DartifactId=tencentcloud-sdk-java -Dversion=3.1.13

这里注意末尾的版本号跟前面pom.xml里的版本号一致

5、编译

mvn compile

6、执行

mvn exec:java -Dexec.mainClass="com.testing.App"

这里的App,实际是test\target\classes\com\testing目录里的App.class,由test\src\main\java\com\testing目录里的App.java编译得来

test\src\main\java\com\testing目录里的App.java是创建maven项目时自动生成的,api explorer里获取的源码DescribeCdnDomainLogs.java(文件命名跟api explorer里自动生成的类名即接口名保持一致即可,这里以DescribeCdnDomainLogs这个接口为例)跟App.java放在同一目录

api explorer生成的代码开头少一句话:package com.testing;

加上这句话,生成的DescribeCdnDomainLogs.class就跟App.class在同一目录,如果缺这句话,即使DescribeCdnDomainLogs.java跟App.java在同一个目录也没用,生成的DescribeCdnDomainLogs.class会在test\target\classes\根目录目录,而不是test\target\classes\com\testing目录

运行的时候就得执行mvn exec:java -Dexec.mainClass="DescribeCdnDomainLogs" (注意不是"com.testing.DescribeCdnDomainLogs",com.testing.没了)

如果你在DescribeCdnDomainLogs.java开头给加上了package com.testing; 那运行的时候就是mvn exec:java -Dexec.mainClass="com.testing.DescribeCdnDomainLogs"

编译和执行可以2步连在一起搞:mvn compile exec:java -Dexec.mainClass="com.testing.DescribeCdnDomainLogs"

如果DescribeCdnDomainLogs.java代码最后一句没有System.exit(0); 那么,执行的时候会有如下WARNING瑕疵

如何解决这个瑕疵,有2种办法:

①带参数-Dexec.cleanupDaemonThreads=false执行:mvn compile exec:java -Dexec.mainClass="com.testing.DescribeCdnDomainLogs" -Dexec.cleanupDaemonThreads=false

②修改DescribeCdnDomainLogs.java代码,给main函数最后一句增加System.exit(0);

然后执行mvn compile exec:java -Dexec.mainClass="com.testing.DescribeCdnDomainLogs"

根据报错信息“This is not a problem with exec:java, it is a problem with the running code. Although not serious, it should be remedied.”来看,主要还是代码问题,所以我倾向给main函数加一句代码解决,而不是在执行环节加特定参数。

举例: