有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使用此文件夹结构编译和运行

我的java源文件位于src/net/。。。文件夹和。lib文件夹中的jar文件。如何在不编写构建脚本的情况下使用命令行编译和运行这些文件


共 (2) 个答案

  1. # 1 楼答案

    试试这个

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

    lib1和lib2是您的库。它假定您的库位于lib文件夹中。您可能还需要更改的目标文件夹。类文件

    要运行应用程序,请使用

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

    它假设你的。类文件位于bin文件夹中

  2. # 2 楼答案

    假设你有你的代码文件

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

    那么如果你的控制台在

    someDirectory>
    

    您可以使用

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

    但这将在与Main.java相同的目录中生成Main.class文件,所以要从net.name.one.two.main.Main类执行代码,您需要将src目录包含到类路径,因为此目录包含放置Main类的包,所以您需要使用命令

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

    但将类文件与源文件分开是一种很好的做法。要做到这一点,您可以在编译pass目录时添加-d(directory)参数,pass目录应该有已编译的类文件。因此,首先在与src目录相同的级别上创建classes目录并执行

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

    现在,为了能够执行Main类,而不是通过src目录到类路径而造成混乱,您必须添加classes目录,这更直观

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