新手:Maven执行异常

时间:2015-02-26 07:12:32

标签: java maven

我的java文件:

    package hello;
    public class helloworld {
      public static void main(String[] args) {
       // Greeter greeter = new Greeter();
      System.out.println("Hello World");
      }
    }

我的pom.xml

 <?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0   http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.springframework</groupId>
  <artifactId>gs-maven</artifactId>
  <packaging>jar</packaging>
  <version>0.1.0</version>

 <build>
    <plugins>
      <plugin>
         <groupId>org.codehaus.mojo</groupId>
         <artifactId>exec-maven-plugin</artifactId>
         <version>1.3.2</version>
         <configuration>
            <mainClass>src.main.java.hello.helloworld.Main</mainClass>
         </configuration>
      </plugin>
    </plugins>
  </build>
 </project>

我的目录结构是

 helloworld
    pom.xml
    src
      main
        java
          hello
            helloworld.java

我用

编译了它
    mvn -e compile

我的跑步命令是

     mvn -e exec:java -Dexec.mainClass="src.main.java.hello.helloworld.Main"

我收到以下错误

    [ERROR] Failed to execute goal org.codehaus.mojo:exec-maven- 
    plugin:1.3.2:java (default-cli) on project gs-maven: An exception 
    occured while executing the Java class. src.main.java.hello.helloworld.Main -> [Help 1]
    org.apache.maven.lifecycle.LifecycleExecutionException: Failed to 
    execute goal org.codehaus.mojo:exec-maven-plugin:1.3.2:java 
    (default-cli) on  project gs-maven: An exception occured while 
    executing the Java class.  src.main.java.hello.helloworld.Main

我不明白这是什么意思?如何运行我的java程序并查看输出“hello world”。

2 个答案:

答案 0 :(得分:4)

更改:

<mainClass>src.main.java.hello.helloworld.Main</mainClass>

致:

<mainClass>hello.helloworld</mainClass>

使用以下方式运行:

mvn -e exec:java

mvn -e exec:java -Dexec.mainClass="hello.helloworld"

您需要了解,在向类添加package语句时,类的完全限定名称应为package.classname。在您的情况下,package语句为package hello;,您的类为helloworld,因此您的类的完全限定名称为hello.helloworld而不是src.main.java.hello.helloworld.Main。那是你出错的地方。请注意,在移动到maven之前,最好使用-cp选项来使用java和javac命令。

答案 1 :(得分:0)

nitpick:将您的班级名称更改为HelloWorld而不是helloworld, 并且你将主类输入hello.HelloWorld

来自java conventions

  

类名应该是名词,混合大小写的第一个字母   每个内部词都大写。尽量保持你的班级名称简单   和描述性的。使用整个单词 - 避免使用缩写词和缩写词   (除非缩写比长形式更广泛使用,   例如URL或HTML)。,示例类Raster; class ImageSprite;