【Java万花筒】物联网安全库大全:保护你的物联网设备和应用程序

2024-03-04 15:12

本文主要是介绍【Java万花筒】物联网安全库大全:保护你的物联网设备和应用程序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

构建安全无忧的物联网:利用Java库保护你的设备和应用程序

前言

随着物联网的快速发展,越来越多的设备和应用程序连接到了互联网。然而,物联网的安全性问题也引起了人们的关注。保护物联网设备和应用程序的安全性对于个人隐私和信息安全至关重要。为了帮助开发人员构建更安全的物联网系统,我们提供了一个综合性的物联网安全库大全,其中包括了一些常用的物联网安全库及其特点、功能和示例用法。

欢迎订阅专栏:Java万花筒

文章目录

  • 构建安全无忧的物联网:利用Java库保护你的设备和应用程序
    • 前言
      • 1. Eclipse Californium
        • 1.1 特点和功能
        • 1.2 示例用法
      • 2. Thales Trusted Cyber Technologies API
        • 2.1 特点和功能
        • 2.2 示例用法
      • 3. Senzing G2
        • 3.1 特点和功能
        • 3.2 示例用法
      • 4. Bouncy Castle
        • 4.1 特点和功能
        • 4.2 示例用法
      • 5. Apache Shiro
        • 5.1 特点和功能
        • 5.2 示例用法
      • 6. OWASP IoT Top 10
        • 6.1 威胁:未授权访问
        • 6.2 威胁:不安全的通信
        • 6.3 威胁:弱身份认证
        • 6.4 威胁:物理威胁
    • 总结

1. Eclipse Californium

1.1 特点和功能

Eclipse Californium是一个开源的物联网(IoT)框架,提供了CoAP(Constrained Application Protocol)的支持。Californium的主要特点和功能有:

  • 提供了基于CoAP协议的通信功能,可以在资源受限的设备上进行高效的通信。
  • 支持可扩展的安全性和认证机制,例如基于DTLS(Datagram Transport Layer Security)的安全通信。
  • 具有强大的资源管理功能,开发者可以很方便地创建和管理CoAP资源。
1.2 示例用法

以下是一个简单的示例代码,展示了如何使用Eclipse Californium创建一个基于CoAP的服务器和客户端:

// 导入所需的类
import org.eclipse.californium.core.CoapResource;
import org.eclipse.californium.core.CoapServer;
import org.eclipse.californium.core.coap.CoAP;
import org.eclipse.californium.core.coap.Request;
import org.eclipse.californium.core.coap.Response;
import org.eclipse.californium.core.server.resources.CoapExchange;// 创建一个CoAP资源
class MyResource extends CoapResource {public MyResource(String name) {super(name);setObservable(true);}@Overridepublic void handleGET(CoapExchange exchange) {// 处理GET请求Response response = new Response(CoAP.ResponseCode.CONTENT);response.setPayload("Hello, World!");exchange.respond(response);}
}public class CoapServerExample {public static void main(String[] args) {// 创建CoAP服务器CoapServer server = new CoapServer();// 添加资源到服务器server.add(new MyResource("hello"));// 启动服务器server.start();System.out.println("CoAP server started");}
}

在上面的示例中,我们创建了一个继承自CoapResource的自定义资源MyResource,并实现了handleGET方法来处理GET请求。然后,我们创建了一个CoapServer实例,并将自定义资源添加到服务器中。最后,启动服务器并监听来自客户端的请求。当客户端发送GET请求到/hello时,服务器会回复一个包含"Hello, World!"的响应。

通过使用Eclipse Californium,我们可以很方便地创建基于CoAP协议的物联网应用程序,并实现安全通信和资源管理功能。

2. Thales Trusted Cyber Technologies API

2.1 特点和功能

Thales Trusted Cyber Technologies API是一个安全解决方案和工具集,提供了端到端的安全性支持。它的主要特点和功能包括:

  • 提供了数据加密、密钥管理和认证等安全功能,可以保护物联网设备和应用程序中的数据安全。
  • 集成了硬件安全模块(HSM),可以提供更高级的物理安全保护,如安全密钥存储和安全算法加速。
  • 拥有易于使用和集成的API,开发人员可以快速集成Thales Trusted Cyber Technologies API到他们的Java应用程序中。
2.2 示例用法

以下是一个简单的示例代码,展示了如何使用Thales Trusted Cyber Technologies API进行数据加密和解密:

// 导入所需的类
import com.thalesgroup.ttc.crypto.*;public class CryptoExample {public static void main(String[] args) throws CryptoException {// 创建密码机实例CryptographicEngine engine = CryptographicFactory.createCryptographicEngine();// 生成密钥对KeyPair keyPair = engine.generateKeyPair(CryptographicAlgorithm.RSA);// 加密数据byte[] plaintext = "Hello, World!".getBytes();byte[] ciphertext = engine.encrypt(plaintext, keyPair.getPublicKey());// 解密数据byte[] decryptedText = engine.decrypt(ciphertext, keyPair.getPrivateKey());// 打印结果System.out.println("Plaintext: " + new String(plaintext));System.out.println("Ciphertext: " + new String(ciphertext));System.out.println("Decrypted text: " + new String(decryptedText));}
}

在上面的示例中,我们首先使用Thales Trusted Cyber Technologies API创建了一个密码机实例 engine。然后,我们使用该实例生成了一个RSA密钥对。接下来,我们使用公钥 keyPair.getPublicKey() 来对数据进行加密,并使用私钥 keyPair.getPrivateKey() 来解密数据。最后,我们打印出加密前、加密后和解密后的数据。

通过使用Thales Trusted Cyber Technologies API,我们可以轻松地实现数据加密和解密,以保护物联网设备和应用程序中的敏感数据。

3. Senzing G2

3.1 特点和功能

Senzing G2是一个高效的物联网数据分析和处理库,可以帮助识别和处理大规模的数据。它的主要特点和功能包括:

  • 提供了强大的实时数据分析和处理能力,可以处理来自物联网设备的大量数据。
  • 能够识别和处理复杂的数据关系,如实体关系和连接关系。
  • 支持实时风险评估和威胁检测,帮助保护物联网系统的安全性。
3.2 示例用法

以下是一个简单的示例代码,展示了如何使用Senzing G2进行实时的物联网数据分析和处理:

// 导入所需的类
import com.senzing.g2.engine.*;public class SenzingExample {public static void main(String[] args) throws G2EngineException {// 创建Senzing G2引擎实例G2Engine engine = new G2JNI();// 初始化引擎engine.init();// 分析数据String data = "John Doe,123 Main St,New York, NY";int flags = G2Flags.ANALYZE_DEFAULT_FLAGS;String result = engine.analyze(data, flags);// 处理结果System.out.println("Analysis result: " + result);// 关闭引擎engine.close();}
}

在上面的示例中,我们首先创建了一个Senzing G2引擎实例 engine。然后,我们使用engine.analyze方法对包含个人信息的数据进行分析,并指定了一些标志和选项。分析结果会返回一个字符串,表示数据的分析结果。最后,我们打印出分析结果。

通过使用Senzing G2,我们可以高效地进行物联网数据分析和处理,识别和处理复杂的数据关系,并提供实时风险评估和威胁检测功能。

4. Bouncy Castle

4.1 特点和功能

Bouncy Castle是一个流行的密码学库,提供了丰富的密码学算法和协议支持。它的主要特点和功能包括:

  • 支持对数据进行加密、解密、数字签名和验证等操作。
  • 提供了各种常用的密码学算法,如AES、RSA、ECDSA等。
  • 具有可扩展性和高性能,可以应用于各种物联网安全场景。
4.2 示例用法

以下是一个示例代码,展示了如何使用Bouncy Castle进行数据加密和解密:

// 导入所需的类
import org.bouncycastle.asn1.ASN1Encodable;
import org.bouncycastle.asn1.ASN1Primitive;
import org.bouncycastle.asn1.cms.CMSAlgorithm;
import org.bouncycastle.cms.CMSEnvelopedDataStreamGenerator;
import org.bouncycastle.cms.CMSEnvelopedDataParser;
import org.bouncycastle.cms.RecipientInformation;
import org.bouncycastle.cms.RecipientInformationStore;
import org.bouncycastle.cms.jcajce.JceCMSContentEncryptorBuilder;
import org.bouncycastle.cms.jcajce.JceKeyTransRecipient;
import org.bouncycastle.cms.jcajce.JceKeyTransRecipientInfoGenerator;
import org.bouncycastle.jce.provider.BouncyCastleProvider;import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.security.KeyPair;
import java.security.Security;public class BouncyCastleExample {public static void main(String[] args) throws Exception {// 导入Bouncy Castle提供的安全提供程序Security.addProvider(new BouncyCastleProvider());// 创建RSA密钥对KeyPair keyPair = RSAUtil.generateKeyPair();// 要加密的数据byte[] plaintext = "Hello, World!".getBytes();// 加密数据byte[] ciphertext = encrypt(plaintext, keyPair.getPublic());// 解密数据byte[] decryptedText = decrypt(ciphertext, keyPair.getPrivate());// 打印结果System.out.println("Plaintext: " + new String(plaintext));System.out.println("Ciphertext: " + new String(ciphertext));System.out.println("Decrypted text: " + new String(decryptedText));}private static byte[] encrypt(byte[] plaintext, Key publicKey) throws Exception {CMSEnvelopedDataStreamGenerator generator = new CMSEnvelopedDataStreamGenerator();JceKeyTransRecipientInfoGenerator recipientGenerator = new JceKeyTransRecipientInfoGenerator(publicKey);generator.addRecipientInfoGenerator(recipientGenerator);ByteArrayOutputStream outputStream = new ByteArrayOutputStream();OutputStream encryptedStream = generator.open(outputStream, new JceCMSContentEncryptorBuilder(CMSAlgorithm.AES256_CBC).build());encryptedStream.write(plaintext);encryptedStream.close();return outputStream.toByteArray();}private static byte[] decrypt(byte[] ciphertext, Key privateKey) throws Exception {ByteArrayInputStream inputStream = new ByteArrayInputStream(ciphertext);CMSEnvelopedDataParser parser = new CMSEnvelopedDataParser(inputStream);RecipientInformationStore recipients = parser.getRecipientInfos();RecipientInformation recipient = recipients.getRecipients().iterator().next();InputStream decryptedStream = recipient.getContent(new JceKeyTransRecipient(privateKey));ByteArrayOutputStream outputStream = new ByteArrayOutputStream();int n;byte[] buffer = new byte[4096];while ((n = decryptedStream.read(buffer)) != -1) {outputStream.write(buffer, 0, n);}return outputStream.toByteArray();}
}

在上面的示例中,我们首先导入了Bouncy Castle提供的安全提供程序,并创建了一个RSA密钥对 keyPair。然后,我们使用encrypt方法对要加密的数据进行加密,并使用decrypt方法对密文进行解密,使用私钥 keyPair.getPrivate() 来解密数据。最后,我们打印出加密前、加密后和解密后的数据。

通过使用Bouncy Castle,我们可以方便地实现数据加密、解密、数字签名和验证等功能,保护物联网设备和应用程序中的数据安全。

5. Apache Shiro

5.1 特点和功能

Apache Shiro是一个功能强大且易于使用的Java安全框架,提供了身份认证和授权的支持。它的主要特点和功能包括:

  • 提供了多种身份认证机制,如用户名密码认证、基于LDAP的认证、OAuth认证等。
  • 支持常见的安全功能,如会话管理、密码哈希和加密、角色和权限的管理等。
  • 具有灵活的框架和易于集成的特点,可以方便地集成到Java应用程序中。
5.2 示例用法

以下是一个简单的示例代码,展示了如何使用Apache Shiro进行用户身份认证和授权管理:

// 导入所需的类
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.*;
import org.apache.shiro.config.IniSecurityManagerFactory;
import org.apache.shiro.mgt.SecurityManager;
import org.apache.shiro.session.Session;
import org.apache.shiro.subject.Subject;
import org.apache.shiro.util.Factory;public class ShiroExample {public static void main(String[] args) {// 使用Ini配置文件创建安全管理器工厂Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");// 创建安全管理器实例SecurityManager securityManager = factory.getInstance();// 设置安全管理器实例SecurityUtils.setSecurityManager(securityManager);// 获取当前会话和主体Subject currentUser = SecurityUtils.getSubject();Session session = currentUser.getSession();// 创建一个测试用户User user = new User("admin", "password");// 尝试进行用户身份认证if (!currentUser.isAuthenticated()) {UsernamePasswordToken token = new UsernamePasswordToken(user.getUsername(), user.getPassword());token.setRememberMe(true);try {// 执行身份认证currentUser.login(token);System.out.println("User [" + currentUser.getPrincipal() + "] logged in successfully.");} catch (UnknownAccountException uae) {System.out.println("Unknown account");} catch (IncorrectCredentialsException ice) {System.out.println("Invalid credentials");} catch (LockedAccountException lae) {System.out.println("Account is locked");} catch (AuthenticationException ae) {System.out.println("Error authenticating");}}// 检查用户权限if (currentUser.hasRole("admin")) {System.out.println("User has admin role");} else {System.out.println("User does not have admin role");}// 注销用户currentUser.logout();System.out.println("User logged out");}
}class User {private String username;private String password;public User(String username, String password) {this.username = username;this.password = password;}public String getUsername() {return username;}public String getPassword() {return password;}
}

在上面的示例中,我们首先使用IniSecurityManagerFactory创建了一个安全管理器工厂,然后使用该工厂创建了一个安全管理器实例。接下来,获取当前会话和主体,并创建了一个测试用户。我们尝试使用UsernamePasswordToken进行用户身份认证,并根据不同的认证结果打印相应的消息。最后,检查用户是否具有admin角色,并进行注销操作。

通过使用Apache Shiro,我们可以方便地实现用户身份认证和授权管理,保护物联网应用程序中的资源和功能。

6. OWASP IoT Top 10

OWASP IoT Top 10是一份由OWASP(开放式Web应用安全项目)提供的物联网设备安全指南,旨在帮助开发人员识别和解决物联网设备安全问题。OWASP IoT Top 10列出了当前物联网设备中最常见的安全威胁和漏洞,并提供了相应的防护和修复建议。其主要特点和功能包括:

提供了安全指南和最佳实践,帮助开发人员了解和应对物联网设备安全挑战。
列出了物联网设备中最常见的安全威胁和漏洞,如未授权访问、不安全的通信、弱身份认证等。
提供了针对每个安全威胁和漏洞的防护和修复建议,帮助开发人员提高物联网设备的安全性。

6.1 威胁:未授权访问
  • 防护措施:
    • 实施强身份认证和访问控制机制,确保只有授权用户可以访问设备和数据。

以下是一个简单的示例代码,展示了如何使用身份认证和访问控制机制来防止未授权访问:

import java.util.HashMap;
import java.util.Map;public class AccessControlExample {private Map<String, Boolean> userPermissions;public AccessControlExample() {userPermissions = new HashMap<>();userPermissions.put("admin", true);userPermissions.put("user", false);}public boolean authenticate(String username, String password) {// 进行身份验证// 省略实际的身份验证过程return true;}public boolean authorize(String username) {// 进行权限授权Boolean hasPermission = userPermissions.get(username);return (hasPermission != null && hasPermission);}public static void main(String[] args) {AccessControlExample example = new AccessControlExample();String username = "admin";String password = "password";if (example.authenticate(username, password)) {if (example.authorize(username)) {System.out.println("Access granted");} else {System.out.println("Access denied");}} else {System.out.println("Authentication failed");}}
}

在上面的示例中,我们创建了一个AccessControlExample类,该类实现了身份认证和访问控制的功能。我们使用一个userPermissions Map来存储用户权限信息,通过authenticate方法进行身份验证,通过authorize方法进行资源访问授权。在主程序中,我们模拟了一个用户进行身份验证和授权的过程,如果身份验证成功且具有授权访问的权限,则输出"Access granted";否则输出"Access denied"。

通过实施强身份认证和访问控制机制,可以有效防止未经授权的访问,提高物联网设备和应用程序的安全性。

6.2 威胁:不安全的通信
  • 防护措施:
    • 使用安全通信协议,如TLS(传输层安全协议),加密设备与其他设备或云端之间的通信。

以下是一个简单的示例代码,展示了如何使用TLS加密网络通信:

import javax.net.ssl.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;public class SecureCommunicationExample {private static final String HOST = "example.com";private static final int PORT = 443;public static void main(String[] args) throws IOException {SSLSocketFactory sslSocketFactory = (SSLSocketFactory) SSLSocketFactory.getDefault();SSLSocket sslSocket = (SSLSocket) sslSocketFactory.createSocket(HOST, PORT);sslSocket.setEnabledCipherSuites(sslSocket.getSupportedCipherSuites());PrintWriter out = new PrintWriter(sslSocket.getOutputStream(), true);BufferedReader in = new BufferedReader(new InputStreamReader(sslSocket.getInputStream()));out.println("Hello, Server!");String response = in.readLine();System.out.println("Server response: " + response);sslSocket.close();}
}

在上面的示例中,我们创建了一个TCP连接,并使用SSLSocketFactory创建一个安全套接字 sslSocket,通过TLS协议进行通信。我们使用PrintWriter向服务器发送消息,并通过BufferedReader获取服务器的响应。最后,我们关闭套接字连接。

通过使用安全通信协议,如TLS,可以加密物联网设备与其他设备或云端之间的通信,提高通信的安全性和隐私保护。

6.3 威胁:弱身份认证
  • 防护措施:
    • 使用强密码策略,并实施多因素身份认证,例如结合密码和生物特征识别。

以下是一个简单的示例代码,展示了如何使用多因素身份认证来提高身份验证的强度:

import java.util.Scanner;public class MultiFactorAuthenticationExample {private static final String PASSWORD = "s3cr3t";private static final int MAX_ATTEMPTS = 3;public static void main(String[] args) {int attempts = 0;boolean isAuthenticated = false;while (attempts < MAX_ATTEMPTS && !isAuthenticated) {Scanner scanner = new Scanner(System.in);System.out.print("Enter password: ");String password = scanner.nextLine();if (authenticateWithPassword(password)) {System.out.print("Enter fingerprint: ");String fingerprint = scanner.nextLine();if (authenticateWithFingerprint(fingerprint)) {System.out.println("Authentication successful");isAuthenticated = true;} else {System.out.println("Fingerprint authentication failed");}} else {System.out.println("Password authentication failed");}attempts++;}if (!isAuthenticated) {System.out.println("Maximum number of attempts reached. Authentication failed");}}private static boolean authenticateWithPassword(String password) {// 进行密码身份认证return password.equals(PASSWORD);}private static boolean authenticateWithFingerprint(String fingerprint) {// 进行指纹身份认证// 省略实际的指纹认证过程return true;}
}

在上面的示例中,我们实现了多因素身份认证,首先使用密码进行身份验证,然后再使用指纹进行身份验证。如果两者验证都成功,则输出"Authentication successful",认证成功;否则输出相应的错误消息,并允许最多尝试MAX_ATTEMPTS次。

通过结合使用强密码策略和其他因素进行身份认证,例如指纹识别、二次验证等,可以提高身份验证的强度,有效防止弱身份认证带来的安全风险。

6.4 威胁:物理威胁
  • 防护措施:
    • 采取物理安全措施,例如安装设备在受限的区域或进行物理封装以防止未经授权的访问。

物理安全是物联网设备安全中的重要方面。以下示例代码展示了如何实施物理安全措施来保护设备。

public class PhysicalSecurityExample {private boolean isDeviceLocked;public void lockDevice() {// 执行设备锁定逻辑isDeviceLocked = true;}public void unlockDevice() {// 执行设备解锁逻辑isDeviceLocked = false;}public boolean isDeviceLocked() {return isDeviceLocked;}public static void main(String[] args) {PhysicalSecurityExample example = new PhysicalSecurityExample();// 锁定设备example.lockDevice();System.out.println("Device locked: " + example.isDeviceLocked());// 解锁设备example.unlockDevice();System.out.println("Device locked: " + example.isDeviceLocked());}
}

在上面的示例中,我们创建了一个PhysicalSecurityExample类,该类模拟了设备的物理安全措施。我们通过设备的lockDevice方法进行设备的锁定,通过unlockDevice方法进行设备的解锁,使用isDeviceLocked方法来检查设备的锁定状态。在主程序中,我们演示了锁定和解锁设备的过程,并输出相应的设备锁定状态。

通过采取物理安全措施,如安装设备在受限的区域或进行物理封装,可以防止未经授权的访问和物理威胁对设备的影响。这样可以提高物联网设备的整体安全性。

总结

保护物联网设备和应用程序的安全性对于构建可靠的物联网系统至关重要。本文提供了一些与Java相关的物联网安全库,涵盖了不同的功能和特点。无论是对于初学者还是有经验的开发人员,本文都提供了具体的示例代码,帮助读者理解和应用这些安全库。

这篇关于【Java万花筒】物联网安全库大全:保护你的物联网设备和应用程序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/773587

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

在cscode中通过maven创建java项目

在cscode中创建java项目 可以通过博客完成maven的导入 建立maven项目 使用快捷键 Ctrl + Shift + P 建立一个 Maven 项目 1 Ctrl + Shift + P 打开输入框2 输入 "> java create"3 选择 maven4 选择 No Archetype5 输入 域名6 输入项目名称7 建立一个文件目录存放项目,文件名一般为项目名8 确定