{"id":15065257,"url":"https://github.com/kosaka-bun/honoka-sdk","last_synced_at":"2025-05-16T19:04:15.760Z","repository":{"id":44447808,"uuid":"510947308","full_name":"kosaka-bun/honoka-sdk","owner":"kosaka-bun","description":"Java与Kotlin开发实用工具包","archived":false,"fork":false,"pushed_at":"2025-05-05T01:10:07.000Z","size":604,"stargazers_count":332,"open_issues_count":0,"forks_count":3,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-05T02:23:06.702Z","etag":null,"topics":["dependency","gradle","java","kotlin","maven","tools","utilities"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kosaka-bun.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-07-06T01:29:20.000Z","updated_at":"2025-05-05T01:10:10.000Z","dependencies_parsed_at":"2024-01-17T04:54:20.751Z","dependency_job_id":"63e53388-77ff-454e-a35c-ab32225a5488","html_url":"https://github.com/kosaka-bun/honoka-sdk","commit_stats":{"total_commits":110,"total_committers":1,"mean_commits":110.0,"dds":0.0,"last_synced_commit":"36c85958d0c444353faba880677ddad32164daf4"},"previous_names":[],"tags_count":21,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kosaka-bun%2Fhonoka-sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kosaka-bun%2Fhonoka-sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kosaka-bun%2Fhonoka-sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kosaka-bun%2Fhonoka-sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kosaka-bun","download_url":"https://codeload.github.com/kosaka-bun/honoka-sdk/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254592368,"owners_count":22097011,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dependency","gradle","java","kotlin","maven","tools","utilities"],"created_at":"2024-09-25T00:35:53.200Z","updated_at":"2025-05-16T19:04:15.671Z","avatar_url":"https://github.com/kosaka-bun.png","language":"Java","funding_links":[],"categories":["工具库"],"sub_categories":[],"readme":"# Honoka SDK\n![Java](./docs/img/badge/Java-8-brightgreen.svg)\n![Kotlin](https://img.shields.io/badge/Kotlin-1.8.10-brightgreen?logo=Kotlin)\u003cbr /\u003e\n[![License](https://img.shields.io/github/license/kosaka-bun/honoka-sdk?label=License\u0026color=blue\u0026logo=GitHub)](./LICENSE)\n![GitHub Stars](https://img.shields.io/github/stars/kosaka-bun/honoka-sdk?label=Stars\u0026logo=GitHub\u0026style=flat)\n[![Release](https://img.shields.io/github/release/kosaka-bun/honoka-sdk?label=Release\u0026logo=GitHub)](../../releases)\n\n## 简介\nHonoka SDK是一款包含了各式各样实用工具的Java与Kotlin工具包，主要包含honoka-utils、honoka-kotlin-utils等模块。提供了包括简写代码、读取文件、后台运行jar包、读取CSV表格、处理Emoji、文字转图片、反射操作等功能的诸多工具类。\n\n本项目采用Apache-2.0 License，使用本项目时，请遵守此开源许可证的相关规定。\n\n**本项目中的所有代码并未经过严格测试，请勿用于生产环境。**\n\n请参阅：[更新日志](./docs/changelog.md)\n\n## 功能展示\n### [ColorfulText](./honoka-utils/src/main/java/de/honoka/sdk/util/code/ColorfulText.java)\n用于方便地在控制台输出彩色文字。\n```java\nColorfulText.of().red(\"red \").green(\"green \").blue(\"blue\").println();\n```\n![](./docs/img/1.png)\n\n### [ConsoleWindow](./honoka-utils/src/main/java/de/honoka/sdk/util/gui/ConsoleWindow.java)\n这是一个使用Java AWT与Swing等组件编写的一个控制台窗口，它可以通过系统托盘图标的方式，使任何可执行jar包能够在系统后台运行。\n\n控制台窗口关闭后，jar包将继续保持在后台运行，点击jar包对应的系统托盘图标，可再次打开控制台窗口。\n```java\npublic static void main(String[] args) {\n    //of方法参数：控制台窗口标题\n    //setOnExit：执行托盘右键菜单中的“退出”项时，要执行的代码段\n    /*\n     * setScreenZoomScale：当前系统的屏幕缩放比例大小，用于准确定位右键弹出菜单\n     * 若不正确设置，则弹出菜单的位置可能会与鼠标点击的位置存在较大偏差\n     */\n    ConsoleWindow.Builder.of(\"Test\").setOnExit(() -\u003e {\n        System.out.println(\"系统退出\");\n    }).setScreenZoomScale(1.25).build();\n    SpringApplication.run(TestApplication.class, args);\n}\n```\n控制台窗口：\n\n![](./docs/img/2.png)\n\n系统托盘图标：\n\n![](./docs/img/3.png)\n\n### [FileUtils](./honoka-utils/src/main/java/de/honoka/sdk/util/file/FileUtils.java)\n#### copyResourceIfNotExists()\n检查当前运行的jar包外部是否含有指定的资源文件，若有则忽略此资源，若没有，则从jar包中指定的相对路径处，提取此资源复制到jar包外部相同的相对路径处。\n\n例如，设指定的路径为`/dir/file.txt`，则先判断jar包所在目录下是否存在`./dir/file.txt`文件，若没有，则从指定类所在的jar包中提取`/dir/file.txt`文件，放置于当前jar包目录下的`./dir/file.txt`这一位置。\n```java\n//参数1：要提取的资源所在的jar包中的某个类，用于基于它获取资源的URL\n//参数2：要提取的资源路径，可以为多个\nFileUtils.copyResourceIfNotExists(ClassInJar.class, \"/dir/file1.txt\", \"/dir/file2.txt\");\n```\n执行完上述代码后，当前运行的jar包所在目录下的`dir`文件夹下应该有`file1.txt`与`file2.txt`两个文件。\n\n#### getClasspath()\n用于获取当前运行的jar包所在的目录的路径，或所运行的class文件的classpath根目录。\n\n设一个Gradle项目在不打包的情况下，直接运行时，其根目录的路径为：`C:\\Projects\\a-project`。\n\n则这个方法的返回值类似于：\n```\nC:\\Projects\\a-project\\build\\classes\\java\\main\n```\n当某个可执行jar包在执行此方法时，此方法的返回值即为jar包所在的目录的路径。\n\n#### urlToString()\n将一个URL所对应的资源直接转换为字符串，编码采用JVM运行时的默认编码。\n\n主要用于直接读取jar包中的文本文件。\n\n### [ImageUtils](./honoka-utils/src/main/java/de/honoka/sdk/util/various/ImageUtils.java)\n文字转图片工具类，转换时图片的高度是自适应的，图片的宽度可以自行指定。可以指定每行最大字符数，或是为图片指定一个固定宽度。此外，它还具有一定的渲染HTML的能力。\n\n### [ReflectUtils](./honoka-utils/src/main/java/de/honoka/sdk/util/various/ReflectUtils.java)\n强大的反射工具类，可以方便地获取和修改被`private`和`final`所修饰的字段的值，以及方便地自动查找和调用指定名称的`private`方法，具有一定的类型推断能力。\n\n```java\n//获取某个定义的字段，并调整可访问性，默认移除final修饰符（如果有）\nField getField(Class\u003c?\u003e clazz, String fieldName);\n//设置某个对象的一个成员的值\nvoid setFieldValue(Object obj, String fieldName, Object value);\n//设置static字段的值\nvoid setFieldValue(Class\u003c?\u003e clazz, String fieldName, Object value);\n//调用某个方法，根据参数值列表，自动推断要查找的方法的参数类型列表\nObject invokeMethod(Object obj, String methodName, Object... args);\n//调用某个方法\nObject invokeMethod(Object obj, String methodName, Class\u003c?\u003e[] parameterType, Object... args);\n```\n使用此工具类，可以避免手动查找获取字段和方法，以及调用`setAccessible()`的麻烦。\n\n### 更多实用工具\n请阅读源代码以了解更多实用工具类的功能。\n\n## 使用\n本项目部署于：\n\n[![maven-repo](https://github-readme-stats.vercel.app/api/pin/?username=kosaka-bun\u0026repo=maven-repo)](https://github.com/kosaka-bun/maven-repo)\n\n使用前请先阅读此仓库的文档，为你的Maven或Gradle添加依赖仓库。\n\n各模块版本号请前往[Releases](../../releases)查看。\n\n### Maven\n```xml\n\u003cdependencies\u003e\n    \u003cdependency\u003e\n        \u003cgroupId\u003ede.honoka.sdk\u003c/groupId\u003e\n        \u003cartifactId\u003ehonoka-utils\u003c/artifactId\u003e\n        \u003cversion\u003e版本号\u003c/version\u003e\n    \u003c/dependency\u003e\n\n    \u003cdependency\u003e\n        \u003cgroupId\u003ede.honoka.sdk\u003c/groupId\u003e\n        \u003cartifactId\u003ehonoka-kotlin-utils\u003c/artifactId\u003e\n        \u003cversion\u003e版本号\u003c/version\u003e\n    \u003c/dependency\u003e\n\u003c/dependencies\u003e\n```\n\n### Gradle\n#### Groovy DSL\n```groovy\ndependencies {\n    implementation 'de.honoka.sdk:honoka-utils:版本号'\n    implementation 'de.honoka.sdk:honoka-kotlin-utils:版本号'\n}\n```\n\n#### Kotlin DSL\n```kotlin\ndependencies {\n    implementation(\"de.honoka.sdk:honoka-utils:版本号\")\n    implementation(\"de.honoka.sdk:honoka-kotlin-utils:版本号\")\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkosaka-bun%2Fhonoka-sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkosaka-bun%2Fhonoka-sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkosaka-bun%2Fhonoka-sdk/lists"}