我们有一个包裹,以异常结尾

package a.b.c.exception;

直到Eclipse 3.3之前,我们的代码库都没有问题,但是当我们转移到Eclipse 3.4时,它开始给出与此软件包相关的错误:

"The package a.b.c.exception collides with a type"

当我将包装名称重构为Abcexceptions时,没有问题。这是由于Eclipse 3.4中的错误还是有一些设置可以纠正此行为?

有帮助吗?

解决方案 5

我更改了Eclipse中的汇编选项之一,问题消失了。在工作区属性下:Java编译器 - >错误/警告 - >从“警告”更改“未使用的导入”到“忽略”。

其他提示

这是因为您有一个命名的课程 exception (带有较低的情况“ e”) a.b.c 包和一个名称的包裹 a.b.c.exception.

它会导致名称碰撞,因为如果您有代码 a.b.c.exception.doSomething(); - 这是否意味着您想调用静态 doSomething() 方法中的方法 a.b.c.exception 班级?还是意味着有一个班级叫 a.b.c.exception.doSomething 您正在尝试调用构造函数吗?

坚持使用Java命名约定 - 包装所有小写,课程以大写和骆驼速度开头 - 您永远不会看到这个问题。

========== edit ============

这是唯一的 合法的 原因应该显示此错误...

它不必直接进入您的项目,它可能是您项目所依赖的另一个项目或库中。这应该向您显示构建路径或项目上任何地方的课程中的任何出现:按Eclipse工具栏上的手电筒看按钮 - >选择'Java search' - > inter在搜索字段中输入abcexception - >>>选择'case sensive' - >>>>>>>>>>>>在“搜索”中选择“键入” - >确保选择所有选项以进行“搜索”。

您是否使用任何生成类的工具?他们可以将它们放入您项目的构建目录中吗?当您看到错误时,如果您转到项目的构建目录,然后进入A/B/C/Directory,您会看到一个.class文件以“异常”?

当然,Eclipse通常可能会有一个错误(尽管我希望Eclipse 3.4中会有一个错误报告,如果是...如果是...方式(其他任何人都可以在Eclipse 3.4中打开您的项目吗?您可以在另一个目录中安装干净的Eclipse 3.4吗?是否出现错误?),或者您的项目可能以某种方式弄乱(创建一个没有依赖关系的新项目除了JDK,在您的新项目中创建Abcexception软件包,在项目中创建一个类 import a.b.c.exception.*; 并查看错误是否发生。)。

在Java中,您无法拥有与软件包名称相同的类名称。

这意味着JDT软件包必须仅在3.4中执行该规则

错误63668 例如。


如Nate评论:

名为异常的类不会阻止您创建软件包异常.
情况很重要.

还要记住一堂课的全名,包括它的包装包。
所以 a.b.SomeClass (班级名称)不同 x.y.SomeClass (包裹名字)。
这里没有名字碰撞。

类名称和软件包名称在情况下都必须匹配,以引起此错误。

他更准确的答案.

我在继承的巨大代码基础上遇到了类似的问题。事实证明,冲突是由Javadoc链接中部分资格的班级名称引起的。

用解释说,Eclipse告诉我,在编译ABCDLONDON时,我有一个包装/类型的冲突。对ABCD的代码进行Java搜索表明,Eclipse认为Abcparis中的Javadoc评论是一场比赛。 Javadoc评论包含{@ link d.Newyork}。当我更改它以读取{@link abcdnewyork}}编译错误已解决。

还应注意的是,纽约没有进口到巴黎班,因为它仅出现在Javadoc评论中。这也使其以缩写形式未解决,并在评论中单击链接无效。使其成为绝对参考,也使Javadoc链接起作用。

我知道这听起来很愚蠢,而且可能太简单了,无法实现,但是我通过以下方式解决了此完全相同的错误消息。

  • 删除导致错误消息的包名称的整个行。
  • 保存.java文件(这会在同一行上触发一个新错误,说明“已声明的软件包”“不匹配预期的软件包”),应该这样做。
  • 将原始软件包名称重新输入到同一行。
  • 保存.java文件。

无法告诉您为什么这起作用了,但确实如此,Eclipse停止了当场发脾气。

安全打字和快速编码。

-Goodge

如果您有class foo,则不能拥有以foo结尾的软件包,例如com.my.foo。
另外,如果您使用的是Maven样式,则在SRC/MAIM/Resources之类的内容下,您的项目中有资源
资源中的文件夹也具有包装样式,而且您也不能有一个包含类名称的文件夹。

根据建议的约定,在开发Jenkins插件时,您肯定会遇到此问题。
如果您遵循Jenkins惯例,并且在包装中的名为Mybuilder的班级中创建一个构建器,那么您还应该将.jelly放在名为Xymybuilder的资源文件夹中。这将导致上述问题。
但是,如果您将资源文件夹命名Xymybuilder(在Mybuilder中注意下部案例“ M”),与推荐的约定不同,该插件仍将按照您的意图工作

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top