2017-02-25 100 views
0

我试图通过运行我Maven的Web应用程序:运行Maven Web应用程序

java -jar CliniKeyMaven-1.0-SNAPSHOT.war 

首先,我面对错误CliniKeyMaven-1.0-SNAPSHOT.war和搜索后没有主清单属性对于一个相当长的时间我在pom.xml中达到这样的:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-war-plugin</artifactId> 
     <version>2.1.1</version> 
     <executions> 
      <execution> 
       <phase>package</phase> 
       <goals> 
        <goal>manifest</goal> 
       </goals> 
      </execution> 
     </executions> 
    <configuration> 
     <failOnMissingWebXml>false</failOnMissingWebXml> 
     <attachClasses>true</attachClasses> 
     <archive> 
      <manifest> 
       <addClasspath>true</addClasspath> 
       <mainClass>com.mycompany.clinikeymaven.App</mainClass> 
      </manifest> 
     </archive> 
    </configuration> 
</plugin> 

,这是App.java包含主:

package com.mycompany.clinikeymaven; 

public class App { 
    public static void main(String[] args) { 
     System.out.println("Hello World!"); 
    } 
} 

但我现在面临的错误:

Could not find or load main class com.mycompany.clinikeymaven.App

当我运行从它工作在NetBeans应用程序,但我需要在命令行中运行它..我该怎么办?

+0

您是否知道这不是Web应用程序通常的工作方式?除非你使用[wildfly-swarm](https://github.com/wildfly-swarm)之类的东西,否则你需要将你的WAR文件“部署”到一个Java EE应用服务器中,然后它将Web请求发送给它。没有'main'方法。 –

+0

是的,我已经这样做了,但我只是把这个主要方法作为其他人的建议,尝试运行WAR文件而不面临我上面提到的错误 –

回答

0

这是一个工作pom。请试试这个。

<build> 
     <plugins> 
      <plugin> 
       <artifactId>maven-assembly-plugin</artifactId> 
       <version>3.0.0</version> 
       <configuration> 
        <descriptorRefs> 
         <descriptorRef>jar-with-dependencies</descriptorRef> 
        </descriptorRefs> 

        <archive> 
         <manifest> 
          <addClasspath>true</addClasspath> 
          <mainClass>com.mycompany.clinikeymaven.App</mainClass> 
         </manifest> 
        </archive> 

       </configuration> 
       <executions> 
        <execution> 
         <id>make-assembly</id> 
         <phase>package</phase> 
         <goals> 
          <goal>single</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.0</version> 
       <configuration> 
        <source>1.7</source> 
        <target>1.7</target> 
       </configuration> 
      </plugin> 
     </plugins> 
     <resources> 
      <resource> 
       <directory>src/main/resources</directory> 
      </resource> 
     </resources> 
    </build> 
+0

谢谢你的工作! –

-1

尝试

java -cp CliniKeyMaven-1.0-SNAPSHOT.war com.mycompany.clinikeymaven.App

或者,您可以在清单文件的内容更新到以下几点:

Main-Class: com.mycompany.clinikeymaven.App

那么你可以尝试运行它通过以下方式:

java -jar CliniKeyMaven-1.0-SNAPSHOT.war

+0

解释这个答案有什么问题。 – VHS

+0

已经尝试过,我仍然得到“无法加载或找到主”错误 –

+0

OP的第一行说'我试图运行我的Maven Web应用程序...'。这不是您运行Web应用程序的方式。 –

0

您需要用户Maven jar plugin而不是Maven war plugin

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-jar-plugin</artifactId> 
    <version>2.4</version> 
    <configuration> 
     <archive> 
      <manifest> 
       <addClasspath>true</addClasspath> 
       <mainClass>com.mycompany.clinikeymaven.App</mainClass> 
      </manifest> 
      <compress>true</compress> 
      <index>true</index> 
     </archive> 
    </configuration> 
</plugin> 

而且随着人们在评论中表示,随着maven-war-plugin您正在创建需要一个应用服务器是一个.war文件部署为了运行。
例如生成的.war可以部署在tomcat服务器上。