从命令行编译和 运行 具有复杂文件结构的 java 程序

Compiling and running a java program with complex file structure from the commandline

尝试从设置有点奇怪的命令行编译和运行我的java程序。文件结构如下:

[ROOT]/
|
|____libs/
|    |____myExtraJar.jar
|     
|____src/
     |____main/
          |____com/
               |____example/
                    |____myClass.java

包在 java 文件的顶部定义为

package com.example;

我可以在根文件夹中编译程序(我认为),使用

javac -classpath "/libs/myExtraJar.jar" src/main/com/example/*.java

我没有收到任何编译错误(比如我离开 class 路径时出现的错误),我可以看到 .class 文件正在 com/example/文件夹。但是,我找不到 运行 编译程序的任何方法。 运行

java src/main/com/example/myClass

消息中的结果

Error: Could not find or load main class src.main.com.example.myClass

如有任何帮助,我们将不胜感激。

你需要在你运行它的时候指定类路径,你还需要使用完全限定的类名。喜欢,

java -cp "libs/myExtraJar.jar:src/main" com.example.myClass

埃利奥特是对的。更准确地说,您需要将 构建目录 添加到 class 路径。它是包含您的 *.class 文件的目录,有时被命名为 target/.

$ java -cp "target:lib/myExtraJar.jar" com.example.myClass

此外,src/main/com/example/myClass 应该是 com.example.myClass,这是 完全限定的 class 名称。有关 java 命令的详细信息,请参阅 http://www.manpagez.com/man/1/java/