उप-पैकेज उप-निर्देशिकाओं के समान हैं। एक उदाहरण पर विचार करें। कंपनी के पास एक com.apple.computers पैकेज था जिसमें एक Dell.java स्रोत फ़ाइल थी, यह इस तरह की उपनिर्देशिकाओं की एक श्रृंखला में समाहित होगी -
....\com\apple\computers\Dell.java
संकलन के समय, कंपाइलर प्रत्येक वर्ग, इंटरफ़ेस और उसमें परिभाषित गणना के लिए एक अलग आउटपुट फ़ाइल बनाता है। आउटपुट फ़ाइल का मूल नाम प्रकार का नाम है, और इसका विस्तार .class है।
उदाहरण के लिए -
// File Name:Dell.java package com.apple.computers; public class Dell { } class Ups { }
अब, -d विकल्प का उपयोग करके इस फ़ाइल को इस प्रकार संकलित करें -
$javac -d.Dell.java
फाइलों को इस प्रकार संकलित किया जाएगा -
.\com\apple\computers\Dell.class .\com\apple\computers\Ups.class
आप \com\apple\computers\ में परिभाषित सभी वर्गों या इंटरफेस को निम्नानुसार आयात कर सकते हैं -
import com.apple.computers.*;