You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaFX项目中SendMail方法迁移至主项目后报错求助

解决方案

核心问题:缺少Java Activation Framework依赖

错误栈的核心原因是java.lang.NoClassDefFoundError: javax/activation/DataHandler,说明项目找不到JAF相关类,按以下方式排查修复:

  1. 正确引入依赖

    • 如果用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"),不要仅放在项目目录下。
  2. 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 04:05:41