Java プログラムを逆コンパイルし、派生した (難読化された) ソースを再コンパイルしたいと考えています。.jar アーカイブを解凍すると、次のようなディレクトリ構造が得られました。
com/
com/foo/A/
com/foo/A/A.class
com/foo/A/B.Class
com/foo/B/A.class
...
com/foo/A.class
com/foo/B.class
org/foo/Bar.class
...
問題は、パッケージとクラスの間に名前の衝突があり、逆コンパイルされたクラス ファイルを再コンパイルできないことです。逆コンパイルされたクラスは次のようになります。
package org.foo;
import com.foo.A; // <-- name collision error
class Bar {
...
}
クラスファイルの名前を変更せずに、これらの命名の問題を解決する方法はありますか?
編集: これは逆コンパイラの問題ではありませんが、命名規則に違反するクラスを含む .jar ファイルを動作させる方法についての質問です。
EDIT2:わかりました、バイトコードレベルでそのような命名が可能だと思いますので、よりスマートな逆コンパイラ(クラスの名前を自動的に変更して参照を修正する)を使用すると、この問題を解決できます。