バイトコードの情報を使用するのではなく、ソースコードで実際に使用するインポートが必要な場合は、QDoxというライブラリを使用してソースコードを解析し、使用するインポートのリストを取得できます。
Main.java
import com.thoughtworks.qdox.JavaDocBuilder;
import javax.swing.JFrame;
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
JavaDocBuilder java = new JavaDocBuilder();
java.addSourceTree(new java.io.File("."));
for (String i : java.getClassByName("Main").getSource().getImports()) {
System.out.println(i);
}
}
}
コンパイルして実行します。
# If you don't have wget, just download the QDox jar by hand
wget -U "" http://repo1.maven.org/maven2/com/thoughtworks/qdox/qdox/1.12/qdox-1.12.jar
javac -classpath qdox-1.12.jar Main.java
java -classpath qdox-1.12.jar:. Main
出力は次のようになります。
com.thoughtworks.qdox.JavaDocBuilder
javax.swing.JFrame
文法的な砂糖なので、それは可能ではないと思われますが、私はそうでなければ証明されたいと思います。 :) – dacwe
ここであなたが探しているものがわかりません。インポートされたライブラリ(importキーワードを使用)は、「実行中に利用可能な」ライブラリとは異なる場合があります。たとえば、ライブラリに対してコンパイルする(その型をインポートする)ことができますが、実行時にクラスパスには含めることはできません。または、使用しないランタイムクラスパスに余分なjarファイルを追加することもできます。また、未使用のインポートはバイトコードには表示されません。 –
@martiell実際には、バイトコードには*輸入されません。 – bezmax