Maven:使用命令行运行java类文件

时间:2016-05-26 21:28:00

标签: java maven

我使用Maven"快速启动"模板。结构看起来像

src
  main
    java
      myapp
        HelloWorld.java

HelloWorld.java被声明为包#34; myapp"

在pom.xml中,只包含junit。

现在,在我运行maven编译之后,我在

下获得了一个类文件
target
  classes
    myapp
      HelloWorld.class

但在我cd到目标/ classes / myapp之后,并且

java -cp . HelloWorld

我得到NoClassDefFoundError,我根据How to execute a java .class from the command line

做了

我试过

java -cp . myapp.HelloWorld    (myapp is the package)

我仍然无法找到或加载主要课程"

我的问题是:我使用" -cp。"设置类路径,然后为什么我仍然无法运行该类?它与Maven有什么关系吗?

我知道我不需要使用命令行,我只是很好奇。

1 个答案:

答案 0 :(得分:4)

-cp。向Java表明您希望它在类的当前目录中查找。要使其工作,您需要使用:

java -cp target/classes myapp.HelloWorld 

(请注意,“myapp”是您定义HelloWorld类的包,并在类的第一行声明为

package myapp;

通过使用上面的java命令,您无需cd进入target / classes / myapp目录。如果要进入目标/类,可以使用以下命令:

java -cp . myapp.HelloWorld 

更新:示例项目内容:

app/
app/pom.xml
app/src/
app/src/main/
app/src/main/java/
app/src/main/java/myapp/
app/src/main/java/myapp/HelloWorld.java

运行mvn clean install后,结构变为:

app/
app/pom.xml
app/src/
app/src/main/
app/src/main/java/
app/src/main/java/myapp/
app/src/main/java/myapp/HelloWorld.java
app/target/
app/target/classes/
app/target/classes/test-1.0.0.jar
app/target/classes/myapp/
app/target/classes/myapp/HelloWorld.class

编译之后,我能够cd到app / target / classes,并运行java -cp。 myapp.HelloWorld

如果您仍遇到问题,可以发布样本类和pom.xml吗?