सबपैकेज सब-डायरेक्टरीज के समान हैं। एक उदाहरण पर विचार करें। कंपनी के पास एक 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.*;