简体   繁体   中英

Manually compile and run multiple packages using javac/java

Let's say I have the following folder structure:

\\src\\com\\proj\\pp1\\stuff where com.proj.pp1 and com.proj.pp1.stuff are the two packages I have:

    -src
      -com
        -proj
          -pp1
             tester.java
             -stuff
                some other .java's

Being the main function in tester.java, and using the classes declared in /stuff.

In tester.java I declare the imports that way:

package com.proj.pp1;    
import com.proj.pp1.*;

And in all the files declared under stuff:

package com.proj.pp1.stuff;

without any imports.

I'm able to get the .class's doing the following, being in /pp1 folder:

javac tester.java stuff/*.java

But when I try to run the tester class:

java tester

It gives me the error output: Could not find or load main class tester and the very same thing if I try java com.proj.pp1.tester

What do you think could be the actual problem?

javac takes files as arguments, so it should be

cd src
javac com/proj/pp1/tester.java

That should compile tester.java and all related classes.

and java takes the main class as argument, so to run it you do:

java com.proj.pp1.tester

(When you invoke java com.proj.pp1.tester make sure com/proj/pp1/tester.class exists.)

You might want to read up on -d option for javac to avoid putting your classes in the source directory.

javac -d bin src/*.java src/stuff/*.java
java -classpath bin src.Main

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM