当前位置: 首页 > 面试题库 >

获取运行Java应用程序时使用的所有类的列表?

仉宪
2023-03-14
问题内容

获取运行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

在这种情况下,如果某个类已在程序执行期间由类加载器加载,并且如果存在此类静态块,则该类的静态块将被运行,则将该类定义为正在使用。


问题答案:

使用标志 verbose:class* 运行Java *

java -verbose:class com.package.Foo

要将其附加到文件中:

java -verbose:class com.package.Foo > classes-used.txt

等等

它还列出了定义这些文件的jar:

例如本课程

public class Test {
     public static void main( String [] args ) {
     }
}

我有(除其他外)

$ java -verbose:class测试 
[已打开/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/classes.jar]
[已打开/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/ui.jar]
[已打开/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/laf.jar]
[已打开/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jsse.jar]
[已打开/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jce.jar]
[已打开/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/charsets.jar]
[从共享库文件中加载java.lang.Object]
[从共享库文件中加载java.io.Serializable]
[从共享库文件中加载java.lang.Comparable]
[从共享库文件中加载java.lang.CharSequence]
[从共享库文件中加载java.lang.String]
[从共享库文件中加载java.lang.reflect.GenericDeclaration]
[从共享库文件中加载java.lang.reflect.Type]
[从共享库文件中加载java.lang.reflect.AnnotatedElement]
[从共享库文件中加载java.lang.Class]
[从共享库文件中加载java.lang.Cloneable]
[从共享库文件中加载java.lang.ClassLoader]
[从共享库文件中加载java.lang.System]


 类似资料:
  • 我想只返回那些在Windows任务管理器中的“应用”类别下列出的应用程序,而不是所有正在运行的进程。下面的脚本返回所有我不想要的进程。如何根据我的要求修改此代码?

  • 问题内容: 我想做这样的事情: 因此,我想查看应用程序的Universe中的所有类,当我发现一个来自Animal的类时,我想创建一个该类型的新对象并将其添加到列表中。这使我可以添加功能,而不必更新事物列表。我可以避免以下情况: 通过上述方法,我可以简单地创建一个扩展Animal的新类,它将自动被拾取。 更新:10/16/2008 9:00 AM太平洋标准时间: 这个问题引起了很多反响-谢谢。 从响

  • 问题内容: 我试图找到Java运行时可用的所有类的名称,并在Guava中使用反射将代码成功实现了一些成功,例如: 这似乎在某种程度上可以使我获得大约2500个类名,但是并没有找到所有的类名,特别是我确实需要了解的所有类,特别是java.lang,java.util等。 我应该为此使用其他类加载器吗?我也尝试过 任何指针将不胜感激。谢谢 恩文 我从这篇文章中使用了更多信息:如何列出特定类加载器中加载

  • 问题内容: 我该如何实现? 到目前为止,我尝试过的所有操作始终返回类型,而不是所使用的特定类型。 问题答案: 正如其他人所提到的,只有在某些情况下才能通过反思来实现。 如果你确实需要类型,这是通常的(类型安全的)解决方法:

  • 问题内容: 我该如何实现? 到目前为止,我尝试过的所有操作始终返回类型,而不是所使用的特定类型。 问题答案: 正如其他人所提到的,只有在某些情况下才能通过反射来实现。 如果你确实需要类型,这是通常的(类型安全)解决方法:

  • 问题内容: 有什么方法可以获取当前JVM中所有正在运行的线程的列表(包括不是由我的类启动的线程)? 是否还可以获取列表中所有线程的和对象? 我希望能够通过代码做到这一点。 问题答案: 要获得一个可迭代的集合: