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

Eclipse Oxygen 3a(4.7.3a)搭配Java 9时无法找到测试类

解决Eclipse中Java 9适配JFXtras时JUnit及测试类找不到的问题

我之前也碰到过类似的Java 9模块与非模块测试项目在Eclipse里的兼容问题,结合你的描述来看,核心矛盾应该是Eclipse对**模块路径(Module Path)和类路径(Classpath)**的处理逻辑和IntelliJ存在差异,尤其是你的jfxtras-test-support并非Java 9模块,这就需要针对性调整配置。下面是具体的排查和解决步骤:

1. 检查主项目的module-info.java配置

如果你的主项目(比如jfxtras-common)是Java 9模块,需要确保模块描述符里正确声明了对非模块依赖的访问权限:

  • 对于JUnit,需要添加静态依赖声明:
    requires static junit;
    
    (static表示该依赖仅在编译和测试时需要,不影响运行时)
  • 对于测试类所在的包,需要开放给JUnit以支持反射调用(JUnit需要通过反射实例化测试类):
    opens com.your.package.to.test to junit;
    
  • 对于非模块的jfxtras-test-support,由于它没有module-info.java,Eclipse会将其视为自动模块,你需要在主项目的module-info.java里添加:
    requires static jfxtras.test.support;
    

2. 调整Eclipse的构建路径分类

Eclipse对模块路径和类路径的区分很严格,你需要确保:

  • 在Java Build Path的Projects标签下,将jfxtras-test-support添加到**类路径(Classpath)**而非模块路径(Module Path)
  • 在Libraries标签下,同样将JUnit等依赖jar包放在类路径中,不要误放到模块路径里

3. 修正JUnit运行配置的路径设置

有时候即使构建路径配置正确,运行配置里的路径可能还是有问题:

  • 打开Run Configurations,找到对应的JUnit测试配置
  • 切换到Classpath标签,确认jfxtras-test-support和JUnit jar都在User Entries下的类路径中
  • 如果主项目是模块,切换到Arguments标签,在VM arguments里添加必要的模块参数,比如:
    --add-modules jfxtras.common,ALL-MODULE-PATH
    
    (ALL-MODULE-PATH会自动加载模块路径上的所有模块,避免遗漏依赖)

4. 清理重建项目,消除缓存问题

Eclipse的编译缓存有时候会导致类文件生成异常,执行以下步骤:

  • 点击菜单栏Project -> Clean,选择你的项目进行清理
  • 右键项目,选择Refresh刷新资源
  • 如果项目使用Maven/Gradle构建,执行Maven/Gradle -> Update Project,确保依赖和编译配置同步

5. 检查输出目录的读写权限

确保Eclipse有读写项目输出目录(默认是bin或者target/classes)的权限,Java 9模块的输出目录结构和之前略有不同,如果权限不足,可能导致编译后的类文件无法正常生成,进而出现“找不到类”的错误。

内容的提问来源于stack exchange,提问作者tbeernot

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:22:26