# java-key-mouse-spirit **Repository Path**: mudking/java-key-mouse-spirit ## Basic Information - **Project Name**: java-key-mouse-spirit - **Description**: java模拟按键精灵的部分功能. - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-06-09 - **Last Updated**: 2026-01-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: jni, 按键精灵, win32 ## README # 按键精灵 ## 运行工程 ### idea 注意配置VM Options ```shell --enable-native-access=ALL-UNNAMED ``` 如果输出这样的警告: ```shell 12月 30, 2025 4:41:19 下午 com.sun.javafx.application.PlatformImpl startup 警告: Unsupported JavaFX configuration: classes were loaded from 'unnamed module @1756d15c' ``` 这是正常的,JavaFX14后, 它自己检测到没有使用module-path而是用classpath,JavaFX就会打印这个日志,但不影响使用. ### maven ```bash ./mvnw javafx:run ``` ## 打包(未完成) 基于jlink的打包,前提是项目需要支持模块化.配置好module-info.java. 但由于项目的一些依赖比如jintellitype、jna是自动模块(没有module-info),jlink无法处理,所以需要还是用jpackage打包. ```bash # 打包 ./mvnw clean compile javafx:jlink -DskipTests ``` 打包后的文件在./target下. ```cmd # 启动 javaw --module-path target\key-mouse-spirit.jar ^ -m key.mouse.spirit/com.huzhenhua.autokey.Launcher # windows下cmd脚本无控制台启动.可直接使用start.bat #start javaw -jar target\key-mouse-spirit.jar ``` ## 打包为可执行的jar包. 使用jlink + jpackage打包. 先正常打包,然后执行package.bat. **有人推荐了这个插件,还没尝试** https://github.com/javapackager/JavaPackager ### 分析项目需要的模块 分析脚本中jpackage命令的"--add-modules"参数需要的模块,把打印出的结果发给AI分析提取. ```cmd jdeps --module-path "%JAVAFX_SDK%\lib" --print-module-deps --multi-release 21 target\key-mouse-spirit-0.1.0-SNAPSHOT.jar ``` ### 打包脚本使用备忘 @REM jpackage默认只打包你指定的 JAR,不会自动包含依赖!这些 JAR 必须和你的主JAR一起放在 --input 目录中,否则运行时会 ClassNotFoundException @REM jpackage的 --win-console 会在启动 EXE 时弹出一个黑色命令行窗口,所有 System.out、System.err、异常堆栈都会显示在这里。 javaFX 不只是 Java 模块,它还依赖原生 DLL 文件和正确的平台支持模块,jlink目前不会自动处理.如果一定要用jlink,就必须手动将javaFX的native dll复制到custom-jre的bin目录中 jpackage可以不使用jlink的runtime image. ```shell --runtime-image target/custom-jre ^ ``` 而是自行处理javaFX依赖 ```shell --module-path "%JAVAFX_SDK%\lib" ^ --add-modules javafx.base,javafx.controls,javafx.fxml,javafx.graphics,javafx.media ^ ``` ## 打包为native image(未成功) **未验证成功,打包后得到的exe没法启动** 可能是一些依赖(jintellitype)依赖操作系统原生的DLL,gluonFX默认不处理第三方JNI库. 注意要先安装好GraalVM Native Imag,配置GRAALVM_HOME 环境变量 首先打开visual studio的“x64 Native Tools Command Prompt for VS 2022”,定位到项目根目录,执行 ```shell mvnw gluonfx:build -DskipTests #mvn clean compile gluonfx:build -DskipTests ``` 构建成功后, 可执行文件位于: ```shell target/gluonfx/${arch}-${platform}/your-app-name.exe ``` 如: ```shell \target\gluonfx\x86_64-windows\java-key-mouse-spirit.exe ``` ## 使用步骤 1. 启动程序 2. 设置按键配置>>保存>>开始 3. 打开目标窗口,保证窗口处于激活状态. 4. 按全局热键F5启动自动按键. 再次按F5则停止. ## 报错 启动时有警告 警告: Unsupported JavaFX configuration: classes were loaded from 'unnamed module @3cb89358' 详细解释: https://bugs.openjdk.java.net/browse/JDK-8256422 简单说明:javafx不支持非模块化, 想要没警告,就得上jmod模块化.但第三方类库不支持,GG. libpng warning: iCCP: cHRM chunk does not match sRGB ## 升级内置的maven版本 ```shell mvn wrapper:wrapper "-Dmaven=3.8.8" ```