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
答案 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及其依赖包装更容易。