【问题标题】:How to run specific class from war file?如何从war文件运行特定的类?
【发布时间】:2014-10-12 07:49:24
【问题描述】:

我有一个 Maven Web 应用程序,它在 Source Packages 文件夹中只包含一个类。我已经从这个项目中获得了战争文件,我想复制它并在另一台机器上运行。我希望能够使用命令行仅运行该特定类。

我仍然想使用war文件的原因是因为该类实现了一个RESTful服务,所以我不知道是否还有其他方法可以走(比如把它做成一个jar并在那里结束)。我的 war 文件还包含几个依赖项,其中一个具有提供的范围:

    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-web-api</artifactId>
        <version>7.0</version>
        <scope>provided</scope>
    </dependency>

这是从 pom.xml 文件中提取的,并且是唯一没有出现在 WEB-INF/lib 文件夹中的依赖项。不过不知道是不是这个问题。

我的班级名为ClientSide,位于client 包下。运行命令:

    java -cp warFileName.war client.ClientSide

导致这个错误:

Error: Could not find or load main class client.ClientSide

Main-Class: client.ClientSide 添加到清单文件并没有改变任何东西。我已经尝试过这里提出的解决方案:How do I run a class in a WAR from the command line? 但没有运气。这个错误会不断重复。

我可以运行该类的唯一方法是右键单击 Web 应用程序中的类并从 netbeans 中选择 Run File,这很烦人。

【问题讨论】:

    标签: java class maven jar war


    【解决方案1】:

    你可以使用

          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                        <mainClass>client.ClientSide.YourMain</mainClass>
                        <classpathPrefix>./lib/</classpathPrefix>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
    

    你可以把这个放在你的主pom.xml,这里你告诉你主类在哪里

    【讨论】:

    • 添加该插件后,我收到以下错误:no main manifest attribute, in ClientSideCommunication-1.0-SNAPSHOT.war 当我运行java -jar ClientSideCommunication-1.0-SNAPSHOT.war 命令时。
    猜你喜欢
    • 2010-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多