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

时间:2017-07-17 23:07:48

标签: java linux javac

尝试从设置有点奇怪的命令行编译和运行我的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文件是在com / example /文件夹中创建的。但是,我无法找到运行已编译程序的任何方法。运行

java src/main/com/example/myClass

会产生消息

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

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:0)

您需要在运行时指定类路径,并且还需要使用完全限定的类名。像,

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

答案 1 :(得分:0)

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

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

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