How do I run java program with multiple classes from cmd?

At the moment I am looking for another way to run my Java program from command line, other than adding it to a JAR file. My program has the following number of classes:

The name of the program file - MyProgram
Main class - Server1
second class - Client Handler
Package name - Items
3rd class - User1
4th class - User2

The main class and client handler alongside the package will have to run first in order for user 1 & user 2 to run, because they are client classes and are dependent on the main class.


Solution 1:

javac *.java // compliles all java files in the dir

java MyClass // runs the particular file

If one class is dependent on another class that hasn't been compiled yet, the program won't run. So you should compile all files before trying to run the program dependent on other files.

If your files are packaged, then something like this

javac com.mypackage/.*java

java com.mypackage.MyClass

Solution 2:

you must ensure that you add the location of your .class file to your classpath. So, if its in the current folder then add . to your classpath. Note that the windows classpath separator is a semi-colon ie ;

javac -cp . PackageName/*.java
java -cp . PackageName/ClassName_Having_main

Example. Suppose you have the following

  • Package Named: com.test

  • Class Name: Hello (Having main)

  • Java file is located inside "src/com/test/Hello.java"

then, from outside directory:

$ cd src
$ javac -cp . com/test/*.java
$ java -cp . com/test/Hello

Note that you can add -d to specify output directory of your class files whenever compiling

$ javac -d output_directory -cp . com/test/Hello

In windows the same thing will be working too, I already tried

Check out this from Oracle official site