The standard Java toolchain (and 3rd-party tools designed to interoperate with them) have specific rules for mapping the names of classes to the pathnames of files and other resources that represent them.

The mappings are as follows

This is illustrated in the following table:

Classname | Source pathname | Classfile pathname | —— | —— | —– |SomeClass | SomeClass.java | SomeClass.class |com.example.SomeClass | com/example/SomeClass.java | com/example/SomeClass.class |SomeClass.Inner | (in SomeClass.java ) | SomeClass$Inner.class |SomeClass anon inner classes | (in SomeClass.java ) | SomeClass$1.class, SomeClass$2.class, etc |