DEV Community

Hunor Vadasz-Perhat
Hunor Vadasz-Perhat

Posted on

maven-006: maven-classpath

The classpath is not a physical folder but rather a list of locations (directories and JAR files) that the JVM uses to find classes at runtime.

Clarification: Classpath vs. Maven Repository

Concept What it is?
Classpath A runtime list of directories and JARs where Java looks for .class files when executing a program.
Maven Repository (~/.m2/repository/) A local folder where Maven downloads and stores dependencies. It is not the classpath itself, but dependencies from here can be included in the classpath.

1. What Exactly is the Classpath?

  • The classpath is a set of directories and JAR files.
  • When you run a Java application, the JVM loads classes only from the classpath.
  • It includes:
    • Your compiled .class files (from target/classes).
    • JAR files from dependencies.

Example:
If your project has:

  • Your compiled files in target/classes/
  • Dependencies in ~/.m2/repository/

Then your classpath might look like:

target/classes:~/.m2/repository/org/springframework/boot/spring-boot-starter-web/3.0.0/spring-boot-starter-web-3.0.0.jar
Enter fullscreen mode Exit fullscreen mode

2. How is the Classpath Defined?

(a) When Running a Java Program Manually

You can explicitly set the classpath when running a Java program:

java -cp target/classes:~/.m2/repository/.../spring-boot-starter-web-3.0.0.jar com.example.MyApplication
Enter fullscreen mode Exit fullscreen mode

Here:

  • -cp (or CLASSPATH variable) defines the classpath.
  • target/classes contains your compiled .class files.
  • The spring-boot-starter-web.jar is needed for Spring Boot.

(b) When Running a Maven Project

Maven automatically sets the classpath when you run:

mvn spring-boot:run
Enter fullscreen mode Exit fullscreen mode

Maven:

  1. Compiles your Java files and puts them in target/classes/.
  2. Fetches dependencies from ~/.m2/repository/.
  3. Starts the application with a fully configured classpath.

(c) When Running from IntelliJ

  • IntelliJ automatically sets up the classpath.
  • If you go to Run > Edit Configurations, you’ll see:
  Classpath: target/classes + Maven Dependencies
Enter fullscreen mode Exit fullscreen mode

3. Viewing the Current Classpath

Method 1: Print Classpath in Java

System.out.println(System.getProperty("java.class.path"));
Enter fullscreen mode Exit fullscreen mode

It prints:

/home/user/project/target/classes:/home/user/.m2/repository/org/springframework/boot/spring-boot-starter-web/3.0.0/spring-boot-starter-web-3.0.0.jar
Enter fullscreen mode Exit fullscreen mode

Method 2: Check Classpath in IntelliJ

  • Go to Run > Edit Configurations.
  • Look under Java Options → You’ll see all JARs included in the classpath.

Method 3: Use Maven

mvn dependency:tree
Enter fullscreen mode Exit fullscreen mode

Shows all dependencies included in the classpath.


4. Key Takeaways

Classpath is NOT a folder but a runtime list of locations (directories + JARs).

Maven downloads dependencies to ~/.m2/repository/, but this is NOT automatically the classpath.

When running a Spring Boot app, JVM loads .class files and dependencies from the classpath.

You can manually define the classpath using java -cp or check it in IntelliJ.

Image of Docusign

Bring your solution into Docusign. Reach over 1.6M customers.

Docusign is now extensible. Overcome challenges with disconnected products and inaccessible data by bringing your solutions into Docusign and publishing to 1.6M customers in the App Center.

Learn more

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay