From 441891652c826d34163f23182a1293ef2074f9a8 Mon Sep 17 00:00:00 2001 From: database-mysql Date: Mon, 10 Aug 2026 20:12:21 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20=E4=B8=B4=E6=97=B6?= =?UTF-8?q?=E7=9B=AE=E5=BD=95=E7=9B=B8=E5=85=B3=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 82 ++++++++++++++++++- pom.xml | 2 +- .../utils/library/utils/runtime/RunEnv.java | 37 ++++++++- .../java/gnu/java/utils/library/version.java | 2 +- .../library/utils/runtime/RunEnvTest.java | 4 +- 5 files changed, 119 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 0639647..2177482 100644 --- a/README.md +++ b/README.md @@ -2,20 +2,22 @@ 一个轻量级 Java 工具库,提供压缩/解压、终端彩色输出、随机数生成、硬件标识等功能。 -*注:此项目/仓库已同步到Github:( https://github.com/databasemysql233-debug/gnu_java_utils_library.git )* -*原项目/仓库链接:( https://git.opensource-studio.info/database-mysql/gnu_java_utils_library.git )* +> 注:此项目/仓库已同步到 Github:[https://github.com/databasemysql233-debug/gnu_java_utils_library.git](https://github.com/databasemysql233-debug/gnu_java_utils_library.git) +> 原项目/仓库链接:[https://git.opensource-studio.info/database-mysql/gnu_java_utils_library.git](https://git.opensource-studio.info/database-mysql/gnu_java_utils_library.git) ## 技术栈 - **Java 25** - **Maven** 构建 - **Apache Commons Compress 1.28.0**(压缩功能依赖) +- **JUnit Jupiter**(测试框架) ## 项目结构 ``` src/main/java/top/gtb520/java/gnu/java/utils/library/ ├── main.java # 统一入口接口 +├── version.java # 项目版本信息 └── utils/ ├── compress/ │ └── compress.java # 压缩/解压工具类 @@ -25,8 +27,11 @@ src/main/java/top/gtb520/java/gnu/java/utils/library/ └── processing/ ├── random/ │ └── defaults.java # 随机数/字符串生成器 - └── hwid/ - └── getHWID.java # 硬件标识生成器 + ├── hwid/ + │ └── getHWID.java # 硬件标识生成器 + └── runtime/ + ├── RunEnv.java # 运行环境信息 + └── JavaRunTimeEnv.java # Java 运行时环境信息 ``` ## 功能模块 @@ -214,6 +219,75 @@ String hwid = getHWID.generateHWID(); System.out.println("HWID: " + hwid); ``` +### 5. 版本信息 (`version`) + +提供项目版本信息及编译时 Java/OpenJDK 版本常量。 + +| 方法 | 说明 | +|----------------------------|----------------| +| `version.GetVersion()` | 获取项目版本号 | +| `version.GetJavaVersion()` | 获取编译时 Java 版本 | + +```java +import top.gtb520.java.gnu.java.utils.library.version; + +version v = new version(); +System.out.println("项目版本: " + v.GetVersion()); +System.out.println("Java版本: " + v.GetJavaVersion()); +``` + +也可以通过统一入口调用: + +```java +import top.gtb520.java.gnu.java.utils.library.main; + +main.version.getVersion(); // 项目版本 +main.version.getJavaVersion(); // Java 版本 +main.version.getOpenJDKVersion(); // OpenJDK 版本 +``` + +### 6. 运行时信息 (`runtime`) + +获取当前 Java 运行时环境信息,包括 JAR 路径、JVM 版本、位数等。 + +**运行环境 (`RunEnv`):** + +| 方法 | 说明 | +|---------------------|---------------| +| `RunEnv.getJarPath()` | 获取当前运行的 JAR 路径 | + +**Java 运行时环境 (`JavaRunTimeEnv`):** + +| 方法 | 说明 | +|----------------------------------------|---------------| +| `JavaRunTimeEnv.JavaVersion()` | Java 版本号 | +| `JavaRunTimeEnv.JavaRuntimeEnvironmentVersion()` | 运行时环境版本号 | +| `JavaRunTimeEnv.JavaVMVersion()` | 虚拟机版本号 | +| `JavaRunTimeEnv.JavaBits()` | JDK 位数(如 64) | +| `JavaRunTimeEnv.JavaVMName()` | 虚拟机名称 | + +```java +import top.gtb520.java.gnu.java.utils.library.utils.runtime.RunEnv; +import top.gtb520.java.gnu.java.utils.library.utils.runtime.JavaRunTimeEnv; + +System.out.println("JAR路径: " + RunEnv.getJarPath()); +System.out.println("Java版本: " + JavaRunTimeEnv.JavaVersion()); +System.out.println("JVM位数: " + JavaRunTimeEnv.JavaBits()); +``` + +也可以通过统一入口调用: + +```java +import top.gtb520.java.gnu.java.utils.library.main; + +main.runtime.getJarPath(); // JAR 路径 +main.runtime.getJavaVersion(); // Java 版本 +main.runtime.getJavaRuntimeEnvironmentVersion(); // 运行时环境版本 +main.runtime.getJavaVMVersion(); // 虚拟机版本 +main.runtime.getJavaBits(); // JDK 位数 +main.runtime.getJavaVMName(); // 虚拟机名称 +``` + ## 构建 ```bash diff --git a/pom.xml b/pom.xml index 19d5cb0..b86d23d 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ top.gtb520.java.gnu gnu_java_utils_library - 1.2-SNAPSHOT + 1.3-SNAPSHOT 25 diff --git a/src/main/java/top/gtb520/java/gnu/java/utils/library/utils/runtime/RunEnv.java b/src/main/java/top/gtb520/java/gnu/java/utils/library/utils/runtime/RunEnv.java index ec93b5a..214a9d1 100644 --- a/src/main/java/top/gtb520/java/gnu/java/utils/library/utils/runtime/RunEnv.java +++ b/src/main/java/top/gtb520/java/gnu/java/utils/library/utils/runtime/RunEnv.java @@ -2,6 +2,8 @@ package top.gtb520.java.gnu.java.utils.library.utils.runtime; import top.gtb520.java.gnu.java.utils.library.main; +import java.nio.file.Path; + // 获取运行时的信息 public class RunEnv { // 获取当前运行的JAR文件路径 @@ -9,9 +11,42 @@ public class RunEnv { String path = main.class.getProtectionDomain().getCodeSource().getLocation().getPath(); if (System.getProperty("os.name").startsWith("Windows")) { path = path.replace('/', '\\'); - //去除路径最前面的 “\” + //去除路径最前面的 "\\" path = path.substring(1); } return path; } + + // 获取临时目录 + public static String getTempDir() { + return System.getProperty("java.io.tmpdir"); + } + + // 新建临时目录,失败时返回 null + public static String newTempDir() { + return createTempDir(Path.of(getTempDir())); + } + + // 在 当前运行的JAR文件路径 下 新建临时目录,失败时返回 null + public static String newJarThisTempDir() { + Path parent = Path.of(getJarPath()).getParent(); + if (parent == null) { + return null; + } + return createTempDir(parent); + } + + // 在指定目录下创建以时间戳命名的临时目录,返回目录路径;目录已存在时返回 null + private static String createTempDir(Path parent) { + Path tempDir = parent.resolve(String.valueOf(System.currentTimeMillis())); + if (!tempDir.toFile().exists()) { + try { + tempDir.toFile().mkdirs(); + } catch (Exception e) { + throw new RuntimeException(e); + } + return tempDir.toString(); + } + return null; + } } diff --git a/src/main/java/top/gtb520/java/gnu/java/utils/library/version.java b/src/main/java/top/gtb520/java/gnu/java/utils/library/version.java index a41d92a..1bdfef8 100644 --- a/src/main/java/top/gtb520/java/gnu/java/utils/library/version.java +++ b/src/main/java/top/gtb520/java/gnu/java/utils/library/version.java @@ -2,7 +2,7 @@ package top.gtb520.java.gnu.java.utils.library; public class version { // 项目的版本信息,不代表实时运行环境 - public static final String VERSION = "1.2"; + public static final String VERSION = "1.3"; public static final String JAVA_VERSION = "25"; public static final String OpenJDK_VERSION = "25.0.0.0.1"; public static final String OpenJDK_Runtime_Environment = "25.0.0.0.1+36-GA"; diff --git a/src/test/java/top/gtb520/java/gnu/java/utils/library/utils/runtime/RunEnvTest.java b/src/test/java/top/gtb520/java/gnu/java/utils/library/utils/runtime/RunEnvTest.java index 84925d4..ef02f61 100644 --- a/src/test/java/top/gtb520/java/gnu/java/utils/library/utils/runtime/RunEnvTest.java +++ b/src/test/java/top/gtb520/java/gnu/java/utils/library/utils/runtime/RunEnvTest.java @@ -1,9 +1,11 @@ package top.gtb520.java.gnu.java.utils.library.utils.runtime; -import static top.gtb520.java.gnu.java.utils.library.utils.runtime.RunEnv.getJarPath; +import static top.gtb520.java.gnu.java.utils.library.utils.runtime.RunEnv.*; class RunEnvTest { public static void main() { System.out.println(getJarPath()); + System.out.printf(newJarThisTempDir() + "\n"); + System.out.println(newTempDir()); } } \ No newline at end of file