Spark Java和classpath

tek*_*agi 6 java maven web spark-java

我正在尝试使用http://www.sparkjava.com/这个小型Java Web框架.说明告诉你将它添加为Maven依赖(完成),但是当我mvn package,我得到一个没有找到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>
Run Code Online (Sandbox Code Playgroud)

编辑:跟踪

? chaos myapp ? java -cp target/myapp-1.0-SNAPSHOT.jar com.bernsteinbear.myapp.App
Exception in thread "main" java.lang.NoClassDefFoundError: spark/Route
Caused by: java.lang.ClassNotFoundException: spark.Route
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Run Code Online (Sandbox Code Playgroud)

aaa和源(来自主页的示例):

? chaos myapp ? cat src/main/java/com/bernsteinbear/myapp/App.java
/**
 * Hello world!
 *
 */

package com.bernsteinbear.myapp;
import spark.*;
import static spark.Spark.*;

public class App {

    public static void main(String[] args) {

    get(new Route("/hello") {
        @Override
        public Object handle(Request request, Response response) {
            return "Hello World!";
        }
        });

    }

}
Run Code Online (Sandbox Code Playgroud)

Bij*_*jan 13

什么对我来说有效:

mvn package
mvn exec:java -Dexec.mainClass="com.your.class.with.main.method"
Run Code Online (Sandbox Code Playgroud)


Wil*_*ill 1

好吧,所以它maven package本身并没有抛出异常;这是执行。Maven 生成的包不得包含运行应用程序所需的所有内容。(如果您对 jar 的确切内容感到好奇,则可以解压缩该 jar。)因此,现在的问题是要么将 Maven依赖项包含到您的打包类路径中(我不一定建议您为此烦恼),要么而只是在运行时类路径中包含额外的 JAR(对于Unix来说类似于-cp a.jar:b.jar:...)。我怀疑Spark-dependencies模块具有所有缺少的依赖项。(不幸的是,自述文件对此不是很清楚。)

\n\n

假设 Spark-dependency 模块就足够了,您只需执行以下操作:

\n\n
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-ap\xe2\x80\x8c\xe2\x80\x8bi-3.0.pre4.jar:lib/slf4j-log4j12-1.6.1.jar com.bernsteinbear.myapp.App\n
Run Code Online (Sandbox Code Playgroud)\n\n

请注意,您必须确保路径正确。假设 Spark-dependency zip 文件已解压缩到 lib 文件夹。

\n\n

如果仍然不行,或者需要更多信息或提供反馈,您也可以直接联系作者。

\n