Run javap -v -constants
on your .class files to see class references.
You might want to pipe the output through grep "= Class"
(Linux) or findstr "=\ Class"
(Windows), or maybe just grep javafx
/ findstr javafx
.
E.g. even a super simple "Hello World" program uses multiple classes.
public class Test {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
Output
C:\path\to\classes\classes>javap -v -constants Test.class | grep "= Class"
#1 = Class #2 // Test
#3 = Class #4 // java/lang/Object
#17 = Class #18 // java/lang/System
#25 = Class #26 // java/io/PrintStream
It doesn't show the use of String
. To see why, look at the full constant pool, which for that small program is:
Constant pool:
#1 = Class #2 // Test
#2 = Utf8 Test
#3 = Class #4 // java/lang/Object
#4 = Utf8 java/lang/Object
#5 = Utf8 <init>
#6 = Utf8 ()V
#7 = Utf8 Code
#8 = Methodref #3.#9 // java/lang/Object."<init>":()V
#9 = NameAndType #5:#6 // "<init>":()V
#10 = Utf8 LineNumberTable
#11 = Utf8 LocalVariableTable
#12 = Utf8 this
#13 = Utf8 LTest;
#14 = Utf8 main
#15 = Utf8 ([Ljava/lang/String;)V
#16 = Fieldref #17.#19 // java/lang/System.out:Ljava/io/PrintStream;
#17 = Class #18 // java/lang/System
#18 = Utf8 java/lang/System
#19 = NameAndType #20:#21 // out:Ljava/io/PrintStream;
#20 = Utf8 out
#21 = Utf8 Ljava/io/PrintStream;
#22 = String #23 // Hello World
#23 = Utf8 Hello World
#24 = Methodref #25.#27 // java/io/PrintStream.println:(Ljava/lang/String;)V
#25 = Class #26 // java/io/PrintStream
#26 = Utf8 java/io/PrintStream
#27 = NameAndType #28:#29 // println:(Ljava/lang/String;)V
#28 = Utf8 println
#29 = Utf8 (Ljava/lang/String;)V
#30 = Utf8 args
#31 = Utf8 [Ljava/lang/String;
#32 = Utf8 SourceFile
#33 = Utf8 Test.java
Since you don't need all the string constants, you could use grep -v Utf8
:
#1 = Class #2 // Test
#3 = Class #4 // java/lang/Object
#8 = Methodref #3.#9 // java/lang/Object."<init>":()V
#9 = NameAndType #5:#6 // "<init>":()V
#16 = Fieldref #17.#19 // java/lang/System.out:Ljava/io/PrintStream;
#17 = Class #18 // java/lang/System
#19 = NameAndType #20:#21 // out:Ljava/io/PrintStream;
#22 = String #23 // Hello World
#24 = Methodref #25.#27 // java/io/PrintStream.println:(Ljava/lang/String;)V
#25 = Class #26 // java/io/PrintStream
#27 = NameAndType #28:#29 // println:(Ljava/lang/String;)V