2012-03-10 23 views
5

...パッケージとクラスの間の名前の衝突。 Eclipseまたはjavacのバグ?サンズ<code>javac</code>は罰金それをコンパイルしながら...</p> <blockquote> <p><em>Only a type can be imported. pkg.a resolves to a package</em></p> </blockquote> <p>:このソースコードについては

enter image description here

... Eclipseは、次のエラーを報告します。

同様の状況私は完全にこのようなクラスpkg.aを修飾しようとした場合:サンズjavacは罰金それをコンパイルしながら

enter image description here

Eclipseは... ...

pkg.a cannot be resolved to a type

を報告します。


javacがまったく反対の場合、Eclipseは識別子をクラス名よりもパッケージとして解釈するほうがよいようです。だから、は、Eclipseまたはjavacのバグですか?

(言語仕様への参照は明らかにプラスである。)

答えて

1

クラスに小文字で大文字とパッケージで始まる名前を付けるスタイリング大会です。それはあなたの問題を解決するでしょう。

+0

質問をお読みですか? (ヒント、大胆なテキストを探してください:) – aioobe

+0

私は質問を読んだ。私はあなたの問題を、スタイリングコンベンションに従うだけでそれを避けているので、あなたがまだ静かであれば人生をもっと難しくするものだと考えます。 – Tom

3

それは間違いなく、Eclipseのバグです:

6.4.2. Obscuring

A simple name may occur in contexts where it may potentially be interpreted as the name of a variable, a type, or a package. In these situations, the rules of §6.5 specify that a variable will be chosen in preference to a type, and that a type will be chosen in preference to a package. Thus, it is may sometimes be impossible to refer to a visible type or package declaration via its simple name. We say that such a declaration is obscured.

明確な意味合いが、それはクラスと同じ名前を持つパッケージのための法的であるということです。さもなければ、JLSは、パッケージを隠すクラスが違法であると言うでしょう...クラスが優先されて使用されるわけではありません。


あなたはこのような状況に得ている唯一の理由は、あなたが命名にJavaの規則を無視することを選択したということである、と述べました。多くの同情を期待しないでください...

+0

このバグは既に報告されていますか?私の場合は、クラス(com.foo.Bar)とクラス名(com/foo/Bar/boo.xml)と衝突するフォルダ内のいくつかのリソースを含むライブラリ(JAR)に依存しています ここで私は何らかの命名規則に違反しているとは思わない...まだEclipseはそれをコンパイルできない。 –

+0

報告されましたが閉鎖されました:https://bugs.eclipse.org/bugs/show_bug.cgi?id=117182 –

関連する問題

 関連する問題