JByteMod运行及编译时WebLaF依赖缺失与类找不到问题求助
JByteMod运行与编译故障排查方案
一、预编译版本运行错误的解决
你遇到的两个核心错误:
AA_TEXT_PROPERTY_KEY找不到:WebLaF 1.2.x依赖Java 8中的AWT字段,高版本Java(11+)已移除该字段,导致反射失败。- XStream模块访问错误:Java 9+的模块化系统限制了反射权限,老版本XStream无法绕过这个限制。
解决办法:
- 优先用Java 8运行预编译JAR,这是最省心的方案。
- 若必须用高版本Java,启动时添加以下VM参数:
java --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.desktop/sun.swing=ALL-UNNAMED --add-opens java.desktop/java.awt=ALL-UNNAMED -jar JByteMod-xxx.jar
二、编译时WebLaF依赖缺失问题
原依赖com.weblaf:weblaf:1.2.9是旧的聚合包,现在WebLaF拆分了模块,且groupId变更为com.weblookandfeel。JByteMod用到了扩展UI组件,必须添加完整依赖:
<dependency> <groupId>com.weblookandfeel</groupId> <artifactId>weblaf-core</artifactId> <version>1.2.9</version> </dependency> <dependency> <groupId>com.weblookandfeel</groupId> <artifactId>weblaf-ui</artifactId> <version>1.2.9</version> </dependency> <dependency> <groupId>com.weblookandfeel</groupId> <artifactId>weblaf-extended</artifactId> <version>1.2.9</version> </dependency>
之前的错误是缺了weblaf-extended模块,里面包含com.alee.extended.breadcrumb.WebBreadcrumbToggleButton这类组件。
如果Maven拉不到依赖,手动构建WebLaF本地包:
- 克隆WebLaF仓库,切换到1.2.9分支
- 执行
mvn install把包安装到本地Maven仓库,再编译JByteMod
三、运行时NoClassDefFoundError解决
编译后运行出现类找不到,是因为打包时没把依赖打进JAR。用Maven Shade插件打包可执行JAR:
在pom.xml中添加插件配置:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.4.1</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass>me.grax.jbytemod.JByteMod</mainClass> </transformer> </transformers> </configuration> </execution> </executions> </plugin> </plugins> </build>
执行mvn package后,target目录下会生成包含所有依赖的可执行JAR,直接运行即可。
内容的提问来源于stack exchange,提问作者UnSure
相关产品推荐
相关产品推荐

