如何使用Jar依赖项编译多个Java文件?

时间:2018-02-08 22:13:53

标签: java compilation javac

StackOverflow上的其他类似答案并没有完全回答这个问题。

我正在运行Windows并有两个文件夹: lib src lib 包含依赖项的 .jar 文件。我试图通过以下方式编译:

javac -cp ".;lib/*" *.java

有效。每个文件都有一个 .class 文件,而 .java 文件与主类有一个额外的 Controller $ 1.class 命名文件。

我尝试通过以下所有方式运行程序:

java -cp ".;lib/*" src/Controller
java -cp ".;lib/*" src/Controller.class
java -cp ".;lib/*" src/Controller$1.class

以上方法均无效。他们都给了我这个错误:

Error: Could not find or load main class Controller

问题是什么?我该怎么办?它在我的IDE中工作正常,但我面试的公司希望它包含JAR文件并可通过命令行编译和运行。

,我不会在很长一段时间内编写类似的内容

此外,如果文件夹结构更深,我怎么能编译和运行它们。例如,如果我有以下文件夹/路径:

lib/
src/
src/core
src/models
src/models/enums

2 个答案:

答案 0 :(得分:0)

您的项目结构似乎是这样的:

root:
lib
src: Controller.java and other files without a package

更正命令:

javac -sourcepath src -d lib src/*.java
java -cp lib Controller

说明:

javac -cp ".;lib/*" *.java
java -cp ".;lib/*" src/Controller

你没有在lib中复制任何类,但你的“cp”设置为lib。类Controller也没有包,所以:

java -cp "lib" Controller

答案 1 :(得分:-1)

我相信您希望使用javac,而不是java来提及您提及的命令,请参阅下文:

javac -cp ".;lib/*" src/Controller.java

另外,您正在使用什么来构建项目?如果您使用的是Maven,那么有一些很棒的插件可以让您的JAR及其依赖包装更容易。