17

我已使用现有工作区移至 Eclipse Photon。我在这个工作区中有一些 Maven 项目。所有项目在 Eclipse Oxygen 中都没有任何错误。在 Eclipse Photon 中打开我的工作区后,所有导入的测试类org.mockito.Mockito都有org.springframework.mock错误org.springframework.test。这些导入无法解决,尽管 Eclipse 知道它们,因为我可以跳入类。

为什么 Eclipse Photon 不能解析这些导入?我该如何解决这个问题?

4

3 回答 3

17

如果这确实是一个 maven 项目并且您使用的是匹配的 m2e-version 1.9,它应该自动配置“包含测试源。”-设置和相关设置正确。

您可能必须通过右键单击项目并选择“Maven”>“更新项目”来更新项目类路径

于 2018-06-29T12:46:21.420 回答
12

我解决了它并想分享我的结果。

eclipse photon 中的构建路径属性在源选项卡中有一个新选项:包含测试源。文件夹的此选项设置为“否myproject/src/test/java” 。当我尝试将其设置为Yes时,出现以下错误:

项目“myproject”中的源文件夹“src/testjava”必须有一个不用于主源的输出文件夹

尽管输出文件夹已设置为与myproject/src/main/java. 要重置设置,我取消选中允许源文件夹的输出文件夹选项并再次设置所有输出文件夹。之后,我能够将提到的选项设置为Yes。结果,进口得到了解决。

原因在此处描述(向下滚动到测试源)。它说:

对于每个项目,编译现在分两个阶段完成:首先是所有主要源(在构建路径上看不到任何测试代码),然后是所有测试源。

由于没有为 test-source-folder 设置该选项,因此它像 main-source-folder 一样编译。因此,无法解析从具有范围测试的依赖项导入测试类。

于 2018-06-29T11:41:57.533 回答
2

对于我基于 Maven 的项目,我能够通过进入项目的 .classpath 文件并添加一个...来解决问题。

<attribute name="test" value="true"/>

标记属性,即

<classpathentry kind="src" output="target/test-classes" path="src/test/java">
    <attributes>
        <attribute name="optional" value="true"/>
        <attribute name="maven.pomderived" value="true"/>
        <attribute name="test" value="true"/>
    </attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
    <attributes>
        <attribute name="maven.pomderived" value="true"/>
        <attribute name="test" value="true"/>
    </attributes>
</classpathentry>

希望有帮助。

于 2018-11-14T18:25:03.823 回答