JavaFX项目中SendMail方法迁移至主项目后报错求助
解决方案
核心问题:缺少Java Activation Framework依赖
错误栈的核心原因是java.lang.NoClassDefFoundError: javax/activation/DataHandler,说明项目找不到JAF相关类,按以下方式排查修复:
正确引入依赖
- 如果用Maven,在
pom.xml中添加:<dependency> <groupId>com.sun.activation</groupId> <artifactId>javax.activation</artifactId> <version>1.2.0</version> </dependency> - 如果用Gradle,在
build.gradle中添加:implementation 'com.sun.activation:javax.activation:1.2.0' - 普通Java项目:确保activation.jar已添加到项目的类路径(IDE中右键jar包选择"Add as Library"),不要仅放在项目目录下。
- 如果用Maven,在
Java模块系统适配(Java 9+)
如果项目使用模块系统(存在module-info.java),需要在模块声明中添加:requires javax.activation;
额外代码修复
除了依赖问题,代码还有两处需要调整:
- 移除
textField_email的static修饰符:FXML注入的控件不能是静态的,否则可能注入失败或引发异常:@FXML TextField textField_email; // 去掉static sendCode()方法中正确获取邮箱输入:public void sendCode() throws MessagingException, SQLException, IOException { sendMail(textField_email.getText()); // 用getText()代替String.valueOf() }
内容的提问来源于stack exchange,提问作者oi_amigo
相关产品推荐
相关产品推荐

