Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kosaka-bun/honoka-sdk
Java与Kotlin开发实用工具包
https://github.com/kosaka-bun/honoka-sdk
dependency gradle java kotlin maven tools utilities
Last synced: about 15 hours ago
JSON representation
Java与Kotlin开发实用工具包
- Host: GitHub
- URL: https://github.com/kosaka-bun/honoka-sdk
- Owner: kosaka-bun
- License: apache-2.0
- Created: 2022-07-06T01:29:20.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2025-01-12T10:15:09.000Z (10 days ago)
- Last Synced: 2025-01-15T00:15:41.369Z (8 days ago)
- Topics: dependency, gradle, java, kotlin, maven, tools, utilities
- Language: Java
- Homepage:
- Size: 548 KB
- Stars: 333
- Watchers: 1
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Honoka SDK
![Java](./docs/img/badge/Java-8-brightgreen.svg)
![Kotlin](https://img.shields.io/badge/Kotlin-1.8.10-brightgreen?logo=Kotlin)
[![License](https://img.shields.io/github/license/kosaka-bun/honoka-sdk?label=License&color=blue&logo=GitHub)](./LICENSE)
![GitHub Stars](https://img.shields.io/github/stars/kosaka-bun/honoka-sdk?label=Stars&logo=GitHub&style=flat)
[![Release](https://img.shields.io/github/release/kosaka-bun/honoka-sdk?label=Release&logo=GitHub)](../../releases)## 简介
Honoka SDK是一款包含了各式各样实用工具的Java与Kotlin工具包,主要包含honoka-utils、honoka-kotlin-utils等模块。提供了包括简写代码、读取文件、后台运行jar包、读取CSV表格、处理Emoji、文字转图片、反射操作等功能的诸多工具类。本项目采用Apache-2.0 License,使用本项目时,请遵守此开源许可证的相关规定。
**本项目中的所有代码并未经过严格测试,请勿用于生产环境。**
请参阅:[更新日志](./docs/changelog.md)
## 功能展示
### [ColorfulText](./honoka-utils/src/main/java/de/honoka/sdk/util/code/ColorfulText.java)
用于方便地在控制台输出彩色文字。
```java
ColorfulText.of().red("red ").green("green ").blue("blue").println();
```
![](./docs/img/1.png)### [ConsoleWindow](./honoka-utils/src/main/java/de/honoka/sdk/util/gui/ConsoleWindow.java)
这是一个使用Java AWT与Swing等组件编写的一个控制台窗口,它可以通过系统托盘图标的方式,使任何可执行jar包能够在系统后台运行。控制台窗口关闭后,jar包将继续保持在后台运行,点击jar包对应的系统托盘图标,可再次打开控制台窗口。
```java
public static void main(String[] args) {
//of方法参数:控制台窗口标题
//setOnExit:执行托盘右键菜单中的“退出”项时,要执行的代码段
/*
* setScreenZoomScale:当前系统的屏幕缩放比例大小,用于准确定位右键弹出菜单
* 若不正确设置,则弹出菜单的位置可能会与鼠标点击的位置存在较大偏差
*/
ConsoleWindow.Builder.of("Test").setOnExit(() -> {
System.out.println("系统退出");
}).setScreenZoomScale(1.25).build();
SpringApplication.run(TestApplication.class, args);
}
```
控制台窗口:![](./docs/img/2.png)
系统托盘图标:
![](./docs/img/3.png)
### [FileUtils](./honoka-utils/src/main/java/de/honoka/sdk/util/file/FileUtils.java)
#### copyResourceIfNotExists()
检查当前运行的jar包外部是否含有指定的资源文件,若有则忽略此资源,若没有,则从jar包中指定的相对路径处,提取此资源复制到jar包外部相同的相对路径处。例如,设指定的路径为`/dir/file.txt`,则先判断jar包所在目录下是否存在`./dir/file.txt`文件,若没有,则从指定类所在的jar包中提取`/dir/file.txt`文件,放置于当前jar包目录下的`./dir/file.txt`这一位置。
```java
//参数1:要提取的资源所在的jar包中的某个类,用于基于它获取资源的URL
//参数2:要提取的资源路径,可以为多个
FileUtils.copyResourceIfNotExists(ClassInJar.class, "/dir/file1.txt", "/dir/file2.txt");
```
执行完上述代码后,当前运行的jar包所在目录下的`dir`文件夹下应该有`file1.txt`与`file2.txt`两个文件。#### getClasspath()
用于获取当前运行的jar包所在的目录的路径,或所运行的class文件的classpath根目录。设一个Gradle项目在不打包的情况下,直接运行时,其根目录的路径为:`C:\Projects\a-project`。
则这个方法的返回值类似于:
```
C:\Projects\a-project\build\classes\java\main
```
当某个可执行jar包在执行此方法时,此方法的返回值即为jar包所在的目录的路径。#### urlToString()
将一个URL所对应的资源直接转换为字符串,编码采用JVM运行时的默认编码。主要用于直接读取jar包中的文本文件。
### [ImageUtils](./honoka-utils/src/main/java/de/honoka/sdk/util/various/ImageUtils.java)
文字转图片工具类,转换时图片的高度是自适应的,图片的宽度可以自行指定。可以指定每行最大字符数,或是为图片指定一个固定宽度。此外,它还具有一定的渲染HTML的能力。### [ReflectUtils](./honoka-utils/src/main/java/de/honoka/sdk/util/various/ReflectUtils.java)
强大的反射工具类,可以方便地获取和修改被`private`和`final`所修饰的字段的值,以及方便地自动查找和调用指定名称的`private`方法,具有一定的类型推断能力。```java
//获取某个定义的字段,并调整可访问性,默认移除final修饰符(如果有)
Field getField(Class> clazz, String fieldName);
//设置某个对象的一个成员的值
void setFieldValue(Object obj, String fieldName, Object value);
//设置static字段的值
void setFieldValue(Class> clazz, String fieldName, Object value);
//调用某个方法,根据参数值列表,自动推断要查找的方法的参数类型列表
Object invokeMethod(Object obj, String methodName, Object... args);
//调用某个方法
Object invokeMethod(Object obj, String methodName, Class>[] parameterType, Object... args);
```
使用此工具类,可以避免手动查找获取字段和方法,以及调用`setAccessible()`的麻烦。### 更多实用工具
请阅读源代码以了解更多实用工具类的功能。## 使用
本项目部署于:[![maven-repo](https://github-readme-stats.vercel.app/api/pin/?username=kosaka-bun&repo=maven-repo)](https://github.com/kosaka-bun/maven-repo)
使用前请先阅读此仓库的文档,为你的Maven或Gradle添加依赖仓库。
各模块版本号请前往[Releases](../../releases)查看。
### Maven
```xml
de.honoka.sdk
honoka-utils
版本号
de.honoka.sdk
honoka-kotlin-utils
版本号
```
### Gradle
#### Groovy DSL
```groovy
dependencies {
implementation 'de.honoka.sdk:honoka-utils:版本号'
implementation 'de.honoka.sdk:honoka-kotlin-utils:版本号'
}
```#### Kotlin DSL
```kotlin
dependencies {
implementation("de.honoka.sdk:honoka-utils:版本号")
implementation("de.honoka.sdk:honoka-kotlin-utils:版本号")
}
```