Eclipse java项目目录结构!=包结构

时间:2013-07-12 17:38:17

标签: java eclipse package

我想使用Eclipse来处理Java项目,其中目录结构与包结构不完全对应。

例如,包a.b.c中的源文件位于目录x/y/c中。叶包的名称(c)始终对应于包含直接目录的名称(也是c),但它们的前缀可能不同(a.bx/y )。

(我认为项目的构建系统将源文件复制到与包结构相对应的目录结构中,但我需要对原始文件进行操作,而不是复制文件。)

当我在Eclipse中查看此项目中的源文件时,我看到了The declared package "a.b.c" does not match the expected package "x.y.c"形式的错误,并且它也无法解析import a.b.foo形式的导入。如何通知Eclipse从x/ya.b的映射并消除这些错误?

请不要建议任何涉及更改包声明或移动文件的解决方案。我也做不到。

2 个答案:

答案 0 :(得分:1)

这在Java中是不可能的,运行时系统总是在包a.b.c中查找/ b / c作为特定类的目录结构。见http://docs.oracle.com/javase/specs/jls/se7/html/jls-7.html#jls-7.4

答案 1 :(得分:1)

我认为,唯一的选择是创建默认的“ANT”目标,该目标会将内容从x\y\c复制到a\b\c。使用Eclipse构建附加此ANT目标。此外,使用a\b\c作为java源并从源中删除x\y\c,因为它会导致编译错误。

这样您就可以使用x\y\c中的文件,但可以立即从a\b\c复制并使用它们。

使用:ANT copyAnt copyDirAnt Compile/Javac任务详细信息以供进一步参考。