无法使用.jar加载导入的类

时间:2016-03-17 13:32:35

标签: java maven jetty spark-java

我目前有一个基于java的maven项目,在运行时,旋转jetty服务器并将web应用程序加载到localhost:4567。我想将此应用程序部署到CentOS虚拟机上的服务器,但我不知道从哪里开始。 CentOS目前运行Apache服务器,安装了maven,DB和其他依赖项。

我将项目打包为.jar,但我目前无法运行.jar文件。当我通过命令提示符或IDE运行jar文件时,我得到一个Exception“java.lang.NoClassDefFoundError:spark / Route”。

pom.xml看起来像这样:

.credits {
    opacity: .2;
    text-align: justify;
    text-align-last: center;
    -moz-text-align-last: center; /* Firefox needs a prefix, according to the docs */
    font-size: 18px;
    line-height: 21px;
}

据我所知,我不应该将Spark Java放入我的类路径中。有谁知道这里发生了什么?

1 个答案:

答案 0 :(得分:2)

你应该使用maven-assembly-plugin构建一个包含依赖项的可执行jar,也称为fat jar。

而不是maven-jar-plugin,请尝试在pom.xml中使用以下内容:

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <version>2.4.1</version>
                    <executions>
                        <execution>
                            <phase>package</phase>
                            <goals>
                                <goal>single</goal>
                            </goals>
                            <configuration>
                                <finalName>${project.artifactId}</finalName>
                                <attach>false</attach>
                                <descriptorRefs>
                                    <descriptorRef>jar-with-dependencies</descriptorRef>
                                </descriptorRefs>
                                <archive>
                                    <manifest>
                                        <mainClass>com.labfinder.Main</mainClass>
                                    </manifest>
                                </archive>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>