【发布时间】:2017-03-28 23:06:46
【问题描述】:
我目前有一个基于 java 的 maven 项目,它在运行时会启动码头服务器并将 Web 应用程序加载到 localhost:4567。我想将此应用程序部署到 CentOS 虚拟机上的服务器上,但我不知道从哪里开始。 CentOS 目前有一个 Apache 服务器正在运行,一个已经安装了 maven、DB 和其他依赖项。
我将项目打包为 .jar,但目前无法运行 .jar 文件。当我通过命令提示符或 IDE 运行 jar 文件时,出现异常“java.lang.NoClassDefFoundError: spark/Route”。
pom.xml 看起来像这样:
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.labfinder</groupId>
<artifactId>labfinder</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>LabFinder</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<repositories>
<repository>
<id>Spark repository</id>
<url>http://www.http://sparkjava.com/nexus/content/repositories/spark/</url>
</repository>
</repositories>
<build>
<plugins>
<plugin>
<!-- Build an executable JAR -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>com.labfinder.Main</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.sparkjava</groupId>
<artifactId>spark-core</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.23</version>
</dependency>
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.1</version>
</dependency>
</dependencies>
据我所知,我不应该将 Spark Java 放入我的类路径中。有人知道这里发生了什么吗?
【问题讨论】:
-
虚拟机上启动jar有什么问题? Jetty默认运行在8080端口,所以不会和apache运行在80端口冲突。
-
我删除了关于 Apache 的提及,但没有引起问题。
标签: java maven jetty spark-java