开发者

Running Java Program from Command Line Linux

开发者 https://www.devze.com 2023-01-16 06:32 出处:网络
I am not very experience with java and this is driving me crazy. I wrote a java program FileManagement and I need to run it from the command line.

I am not very experience with java and this is driving me crazy. I wrote a java program FileManagement and I need to run it from the command line.

I can compile it from the command line with javac FileManagement/*.java which will create all the classes in that folder but when I try java FileManagement.Main it says :

Exception in thread "main" java.lang.NoClassDefFoundError: FileManagement/Main

The thing is that I have tried this same procedure in a remote computer and it is working fine.开发者_如何学Go It is not working on mine.


If your Main class is in a package called FileManagement, then try:

java -cp . FileManagement.Main

in the parent folder of the FileManagement folder.

If your Main class is not in a package (the default package) then cd to the FileManagement folder and try:

java -cp . Main

More info about the CLASSPATH and how the JRE find classes:

  • How Classes are Found
  • Setting the class path (Solaris/Linux)
  • http://en.wikipedia.org/wiki/Classpath_(Java)


Guys let's understand the syntax of it.

  1. If class file is present in the Current Dir.

    java -cp . fileName

  2. If class file is present within the Dir. Go to the Parent Dir and enter below cmd.

    java -cp . dir1.dir2.dir3.fileName

  3. If there is a dependency on external jars then,

    java -cp .:./jarName1:./jarName2 fileName

    Hope this helps.


(This is the KISS answer.)

Let's say you have several .java files in the current directory:

$ ls -1 *.java
javaFileName1.java
javaFileName2.java

Let's say each of them have a main() method (so they are programs, not libs), then to compile them do:

javac *.java -d .

This will generate as many subfolders as "packages" the .java files are associated to. In my case all java files where inside under the same package name packageName, so only one folder was generated with that name, so to execute each of them:

java -cp . packageName.javaFileName1
java -cp . packageName.javaFileName2


What is the package name of your class? If there is no package name, then most likely the solution is:

java -cp FileManagement Main
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号