How to compile and run with this folder structure

前端 未结 2 1931
闹比i
闹比i 2020-12-07 00:29

I have my java source files in src/net/... folders and .jar files in lib folder. How to compile and run this files with command line without writing build script ?

相关标签:
2条回答
  • 2020-12-07 00:49

    Try this

    javac -cp .;lib/lib1.jar;lib/lib2.jar src/net/*.java
    

    lib1 and lib2 are your libraries. It assume your libraries are in lib folder. You may also need to change the destination folder for .class files.

    To run the application use

    java -cp bin;lib/lib1.jar;lib/lib2.jar net.mypackage.MyMainclass
    

    net...

    It assume your .class files are in bin folder.

    0 讨论(0)
  • 2020-12-07 01:00

    Lets say you have your code files in

    [someDirectory]
      |
      +-[lib]
      |  |
      |  +-someLib.jar
      |  +-someOtherLib.jar
      |  +-...
      |
      +--[src]
           |
           +-[net]
               |
               +-[name]
                    |
                    +-[one]
                       |
                       +-[two]
                           |
                           +-[main]
                               |
                               +-Main.java <- code you want to compile
                                              and execute
    

    then if your console is in

    someDirectory>
    

    you can compile it with

    someDirectory>javac -cp "lib\*" src\net\name\one\two\main\Main.java
    

    but this will produce Main.class file in same directory as Main.java so to execute code from net.name.one.two.main.Main class you would need to include src directory to classPath because this directory contains package that Main class is placed, so you would need to use command

    someDirectory>java -cp "src;lib\*" net.name.one.two.main.Main
    

    But it is good practice to separate class files from source files. To do this you can add -d (directory) parameter while compiling pass directory which should have compiled class files. So first create your classes directory at the same level as src directory and execute

    someDirectory>javac -d "classes" -cp "lib\*" src\net\name\one\two\main\Main.java
    

    and now to be able to execute your Main class instead creating confusion by src directory to classPath you will have to add classes directory which is more intuitive.

    someDirectory>java -cp "classes;lib\*" net.name.one.two.main.Main.java
    
    0 讨论(0)
提交回复
热议问题