Spark Java和类路径
我正试图从一个小型Java web框架开始。说明告诉您将其添加为Maven依赖项(完成),但是当我Spark Java和类路径,java,maven,web,spark-java,Java,Maven,Web,Spark Java,我正试图从一个小型Java web框架开始。说明告诉您将其添加为Maven依赖项(完成),但是当我mvn包时,我会得到一个未找到spark/Route的类def 我想这是因为Spark不在我的类路径中。我如何添加它?它会进入pom.xml 编辑:对不起,这是我的pom.xml: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
mvn包
时,我会得到一个未找到spark/Route的类def
我想这是因为Spark不在我的类路径中。我如何添加它?它会进入pom.xml
编辑:对不起,这是我的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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.bernsteinbear.myapp</groupId>
<artifactId>myapp</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>myapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<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>1.1</version>
</dependency>
</dependencies>
</project>
aa和来源(主页上的示例):
好的,
maven包本身没有抛出异常;那是行刑。Maven生成的包不能包含运行应用程序所需的所有内容。(如果您对jar的确切内容感到好奇,您可以解压它。)因此,现在的问题是要么将Maven包含到打包的类路径中(我不建议您费心处理这个问题),要么只是在运行时类路径中包含额外的jar(看起来像-cp a.jar:b.jar:…
)。我怀疑该模块具有所有缺少的依赖项。(不幸的是,自述文件对此并不十分清楚。)
假设spark dependencies模块足够,您只需执行以下操作:
java -cp target/myapp-1.0-SNAPSHOT.jar:lib/jetty-webapp-7.3.0.v20110203.jar:lib/log4j-1.2.14.jar:lib/slf4j-api-1.6.1.jar:lib/servlet-api-3.0.pre4.jar:lib/slf4j-log4j12-1.6.1.jar com.bernsteinbear.myapp.App
注意,您必须获得正确的路径。这是假设spark dependencies zip文件解压缩到lib文件夹
如果仍然不行,或者为了获取更多信息或提供反馈,您也可以直接ping作者。什么对我有效,使其运行:
mvn package
mvn exec:java -Dexec.mainClass="com.your.class.with.main.method"
我在尝试将应用程序部署到Heroku时也遇到了同样的问题。我在POM.xml中添加了以下内容。该插件确保maven依赖项被复制到应用程序中
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals><goal>copy-dependencies</goal></goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
要运行应用程序请共享您的pom.xml pom.xml从Maven的角度来看是正确的(假设Spark本身没有bug)。您可以共享堆栈跟踪和一些源代码吗?你试过来源的例子了吗?@威尔,给你。前页的例子。我如何理解“jetty webapp…”字符串?spark依赖项中的jar。只需解压缩zip文件并查看一下。很抱歉--我刚刚更正了spark dependencies的链接,以防您遇到麻烦。我已经用确切的JAR名称(从当前spark dependencies开始)更新了答案。有没有办法创建一个完整的独立JAR?是的,使用Maven。请参阅,了解需要复制的依赖项,以及关于如何使用Maven将依赖项合并到JAR中的社区Wiki答案:
mvn package
mvn exec:java -Dexec.mainClass="com.your.class.with.main.method"
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals><goal>copy-dependencies</goal></goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
java -cp target/classes:"target/dependency/*" com.bernsteinbear.myapp.App