【问题标题】:Eclipse Projectdependency on multiple src directoriesEclipse Project依赖多个src目录
【发布时间】:2018-06-20 15:09:57
【问题描述】:

今天我有一个特殊的问题,我已经在调试器上花了一段时间。 我有两个项目项目 A 和项目 B。 项目 A 有多个 src 目录。

src
├───main
│   └───java
└───generated
    └───java

两者都被 eclipse 识别为实际的 src 目录。两者都将被编译到 bin 中,如下所示:

bin
├───main
└───generated

项目 B 对项目 A 具有项目依赖性。 现在出现了奇怪的部分:当我在项目 B 中通过 Class.forName() 从 Project A/src/main/java 中查找一个类时,它会被找到。当我从Project A/src/generated/java 寻找一个类时,我得到一个 ClassNotFound 异常。

如果您能指出一种方法来告诉 eclipse 创建对两个 src 目录的依赖关系,我将非常高兴。

顺便说一句,以防万一:我使用的是 java 9。 这是来自项目 B 的 .classpath 的摘录

<classpathentry kind="src" path="/Project A"/>

感谢您的帮助。

【问题讨论】:

  • 这听起来像是您可能已经过时的 Eclipse IDE 的错误。你能用a preview version of Eclipse Photon 重现这个问题吗(用 Neon 应该不能使用 Java 9,至少需要 Oxygen.1a 才能编写 Java 9 代码;Neon 已于 2016 年发布,Oxygen 是当前版本,Photon 将是下周发布)?
  • @howlger 我弄错了,我用的不是霓虹灯而是氧气。我按照你的要求做了,并试图复制光子 RC3 中的行为。问题仍然存在。
  • 可能是运行配置(尝试删除它并重试Run As > ...)或gradle.build(是否包含apply plugin: 'eclipse'?)不同步。作为一种解决方法,您可以使用不同的源文件夹,但只能使用一个输出文件夹。

标签: eclipse gradle java-9 eclipse-neon


【解决方案1】:

这看起来像是 Eclipse、Gradle 或两者的组合的错误。尝试删除运行配置并重新启动应用程序。还要确保gradle.build 文件与Eclipse 项目同步。如果所有这些都没有帮助,您可以使用单个输出文件夹作为解决方法:

  • 在 Project > Properties: Java Build Path 中手动,在标签 Source 中:
    1. 取消选中复选框允许源文件夹的输出文件夹
    2. 在字段默认输出文件夹输入bin/main
  • 或通过以下方式gradle.buildsn-p:
apply plugin: 'eclipse'
eclipse.classpath.file.whenMerged {
    entries.find { it.path == 'src/main/java' }.output = 'bin/main'
    entries.find { it.path == 'src/generated/java' }.output = 'bin/main'
}

【讨论】:

  • 你是个天才,删除运行配置就可以了。我不敢相信我在这个问题上花了 10 个小时,研究类加载器和各种东西,而唯一的问题是损坏的运行配置。非常感谢。
猜你喜欢
  • 2013-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-11
  • 2015-12-24
  • 2011-11-23
  • 1970-01-01
相关资源
最近更新 更多