我的笔记步骤结束后有详细过程
笔记
代码语言: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>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>3.3.0</version>
</dependency>
在命令行中,导航到项目目录,然后运行以下命令以下载并安装新添加的依赖项
mvn clean install
3、改文件名跟类名要匹配
C:UsersAdministratortestsrcmainjavacomtesting
比如文件名是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:UsersAdministrator.m2wrapperdistsapache-maven-3.6.2-bin795eh28tki48bv3l67maojf0raapache-maven-3.6.2bin
例如:C:UsersHASEE.m2wrapperdistsapache-maven-3.6.3-bin1iopthnavndlasol9gbrbg6bf2apache-maven-3.6.3bin
运行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,实际是testtargetclassescomtesting目录里的App.class,由testsrcmainjavacomtesting目录里的App.java编译得来
testsrcmainjavacomtesting目录里的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会在testtargetclasses根目录目录,而不是testtargetclassescomtesting目录
运行的时候就得执行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函数加一句代码解决,而不是在执行环节加特定参数。
举例: