【问题标题】:How to compile and run with this folder structure如何使用此文件夹结构编译和运行
【发布时间】:2013-09-11 11:53:53
【问题描述】:

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

【问题讨论】:

标签: java javac


【解决方案1】:

假设你有你的代码文件

[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 目录包含到classPath,因为该目录包含放置Main 类的包,所以你需要使用命令

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

但最好将类文件与源文件分开。为此,您可以在编译应该已编译类文件的传递目录时添加-d(目录)参数。所以首先在src目录同级创建你的classes目录并执行

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

现在为了能够执行您的Main 类而不是通过src 目录对classPath 造成混淆,您必须添加更直观的classes 目录。

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

【讨论】:

  • 它可以编译,但是如何运行它们
  • 要运行 Java 应用程序,您需要使用 javac 使用 main 方法编译类,包括类路径中所有必需的 jar。当您编译它时,只需使用包含您的类结构的文件夹中的java -cp "lib/*" full.name.of.YourClass。通常由 Eclipse、NetBeans 等 IDE 完成。
  • 在发布该问题之前,我尝试过但它不起作用,它说Error: Could not find or load main class name.one.two.Main 但是当我删除文件夹结构时它工作正常。
  • 使用-cp ".;lib/*". 添加到类路径有帮助吗?
  • 为了帮助我们帮助您尝试在问题示例中包含您尝试运行的类,它放置在哪里,您的控制台在哪个目录中运行(您在控制台中的哪个目录,例如 @ 987654343@, c:/someDirectory&gt;),你现在使用的命令和不工作的确切命令。
【解决方案2】:

试试这个

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

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

要运行应用程序,请使用

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

网络...

假设您的 .class 文件位于 bin 文件夹中。

【讨论】:

  • 运行使用java -cp bin;lib/lib1.jar;lib/lib2.jar YOUR_PACKAGE_NAME。假设您的.class文件在bin文件夹中。
  • 但它不能正常工作,程序退出,给出几个错误
  • 错误意味着有一些命令行参数来启动程序。通过使用您的方法,它不会请求它们。
  • 嗨,MadhuSilva,我刚试了一下,结果发现不是你的包名,而是像net.mypackage.MyMainClass这样的类路径
猜你喜欢
  • 2012-03-19
  • 1970-01-01
  • 1970-01-01
  • 2013-10-15
  • 1970-01-01
  • 2019-05-20
  • 1970-01-01
  • 2013-03-30
  • 2015-11-22
相关资源
最近更新 更多