我想使用Eclipse处理一个目录结构与包结构不完全对应的Java项目。
例如,包a.b.c中的源文件位于x/y/c目录中。叶包(c)的名称总是对应于立即包含目录的名称(也是c),但它们的前缀可能不同(a.b与x/y)。
(我认为项目的构建系统将源文件复制到与包结构相对应的目录结构中,但我需要对原始文件进行操作,而不是对复制的文件进行操作。)
当我在Eclipse中查看这个项目中的源文件时,我会看到表单The declared package "a.b.c" does not match the expected package "x.y.c"的错误,并且它也无法解析表单import a.b.foo的导入。如何将从x/y到a.b的映射通知Eclipse并消除这些错误?
请不要建议任何涉及更改包声明或移动文件的解决方案。我也做不到。
发布于 2013-07-12 17:47:38
这在Java中是不可能的,运行时系统总是将a/b/c作为a.b.c包中特定类的目录结构。请参阅http://docs.oracle.com/javase/specs/jls/se7/html/jls-7.html#jls-7.4
发布于 2013-07-12 17:56:47
我认为,唯一的选择是创建一个默认的"ANT“目标,它将内容从x\y\c复制到a\b\c。将这个ANT目标附加到Eclipse构建中。此外,使用a\b\c作为java源代码,并从源代码中删除x\y\c,因为它会导致编译错误。
这将允许您在驻留在x\y\c中的文件中工作,但可以立即从a\b\c复制和使用它们。
使用:蚂蚁拷贝、Ant copyDir和Ant编译/Javac任务详细信息以获得进一步的参考。
https://stackoverflow.com/questions/17620824
复制相似问题