获取运行 Java 应用程序时使用的所有类的列表的最简单方法是什么?
假使,假设com.package.Foo.main
通过运行调用:
java com.package.Foo
运行程序后,我希望获得运行程序时使用的所有类的列表:
cat classes-used.txt
com.package.Foo
com.package.FooHelper
com.otherpackage.SomeClass
java.lang.String
java.util.List
java.util.ArrayList
在这种情况下,如果类在程序执行期间已由类加载器加载,并且如果此类静态块存在,则该类的静态块将已运行,则该类被定义为正在使用。
使用标志运行java详细:类
java -verbose:class com.package.Foo
要将其附加到文件中:
java -verbose:class com.package.Foo > classes-used.txt
etc.
它还列出了定义这些文件的 jar:
例如对于这个类
public class Test {
public static void main( String [] args ) {
}
}
我有(除其他外)
$ java -verbose:class Test
[Opened /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/classes.jar]
[Opened /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/ui.jar]
[Opened /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/laf.jar]
[Opened /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jsse.jar]
[Opened /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jce.jar]
[Opened /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/charsets.jar]
[Loaded java.lang.Object from shared objects file]
[Loaded java.io.Serializable from shared objects file]
[Loaded java.lang.Comparable from shared objects file]
[Loaded java.lang.CharSequence from shared objects file]
[Loaded java.lang.String from shared objects file]
[Loaded java.lang.reflect.GenericDeclaration from shared objects file]
[Loaded java.lang.reflect.Type from shared objects file]
[Loaded java.lang.reflect.AnnotatedElement from shared objects file]
[Loaded java.lang.Class from shared objects file]
[Loaded java.lang.Cloneable from shared objects file]
[Loaded java.lang.ClassLoader from shared objects file]
[Loaded java.lang.System from shared objects file]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)