2

我有一个包 x,其中包含大约 30 个类。我正在编译的程序使用包 x 中的 5 个类。如何一目了然地找到我当前编译过程中使用的 5 个类?

我目前的方法是检查代码并查看使用/实例化了哪些类,这既乏味又缓慢,因为我必须手动浏览代码。有没有更好的方法来查找我当前编译期间使用的所有类?

我想按下一个按钮并查看编译我的程序所需的所有类。

4

1 回答 1

2

这个命令怎么样:

# which jar file you need analyzing
export JAR_FILE="...";
# export CLASSPATH environment for compiling purpose
export CLASSPATH="...";

javac -verbose *.java 2>&1 \
     | grep -E "^\[loading" \
     | grep $JAR_FILE \
     | grep -Eo "\((.*?)\)";

例子

编译Main.java

public class Main {
   public static void main(String[] args) {
      org.joda.time.DateTime dateTime = new org.joda.time.DateTime();
   }
}

使用以下命令:

export JAR_FILE="joda-time-2.9.9.jar";
export CLASSPATH="joda-time-2.9.9.jar";
javac -verbose *.java 2>&1 \
     | grep -E "^\[loading" \
     | grep $JAR_FILE \
     | grep -Eo "\((.*?)\)";

将输出joda.jar仅用于的类:

(org/joda/time/DateTime.class)

于 2017-05-21T16:44:45.303 回答