2011-02-23 8 views
0

プロジェクトを完了するには、名前付きパッケージでクラスファイルを変更する必要があります。名前付きパッケージから名前のないパッケージをJavaに認識させる方法はありますか?

私は名前のないパッケージに入れることはできません。他のクラスからインポートされます。

名前付きパッケージにすべての依存関係を入れることはできません。他のクラスにも依存しています。

私の目標は、名前のないパッケージからのインポートを可能にするために必要な手段でjavacを強制することです。悪い習慣ですが、他に選択肢はありません。

をインポートしたクラスをすべて再コンパイルせずに、コンパイルしてコンパイルした後にこれらの参照を削除するにはどうすればよいですか?

+0

*名前が付けられたパッケージ内のパッケージがコンパイルされている(逆コンパイルされている場合)ため、そのクラスが許可されているときに戻されます。 – Andrew

+0

なぜ強制する必要がありますか?あなたがクラスをインポートするのを止めているのは何ですか? – biziclop

+1

質問がより明確になる必要があります。 – jprete

答えて

2

私はこの問題を解決しました。私は、名前付きパッケージ内にインポートしたすべてのクラスとメソッドをベアボーンで定義し、Classeditorというプログラムを使用してコンパイル後のパッケージ名/パスを編集してプログラムをコンパイルしました。

0

私は、名前のないパッケージからjava 1.4までの名前付きパッケージのクラスにクラスをインポートすることができたと考えています。しかし、それはもはや機能しません。

File A.java 
import b.B; // <-- This is ok 
class A { 
... 
} 

File B.java 
package b; 
import A; // <-- Does not compile after 1.4 
class B { 
... 
} 

クラスAではなく、他の方法からクラスBを参照することが可能であろう:あなたはこのような2つのクラスを持っている場合、ある

。名前のないパッケージからクラスをインポートすることはできません。

JDK 1.3を使用してクラスをコンパイルしてみてください。それらはJDK 1.4以上で実行されます。

+0

人々は「あなたはできない」と言っています。しかし、とにかくやりたい。 Javaの厄介な小さな「機能」を取り除くために変更できる信頼できるオープンソースのJDKはありますか? – Andrew

+0

@Andrewあなたは私が見る限り完全に実行可能な解決策を与えられました。 – biziclop

1

は、どのように私は彼らに

を再コンパイルせずに、パッケージ に インポートされたクラスのすべてを置くことについて行くだろうあなたことはできませんが、パッケージ名が完全なクラス名と存在の一部であり、クラスファイル自体に

これらのクラスにアクセスするためにリフレクションを使用できますが、これは醜い問題のための醜い解決策です。

関連する問題