Restlet and Jackson: java.lang.NoClassDefFoundError: org/codehaus/jackson/JsonFactory
Restlet and Jackson: java.lang.NoClassDefFoundError: org/codehaus/jackson/JsonFactory
我正在尝试使用以下 Java 代码让 Restlet 与 Jackson 一起工作:
public class HelloWorldResource extends ServerResource{
@Get("json")
public Todo represent()
{
Todo t = new Todo();
t.setId("1");
t.setDescription("hello");
t.setSummary("world");
return t;
}
//...
}
当我 运行 程序时出现错误:
java.lang.NoClassDefFoundError: org/codehaus/jackson/JsonFactory
这些是我正在使用的罐子:
为什么找不到依赖项?
编辑:
我通过将此 jar 添加到类路径来解决问题。
我仍然想知道我要添加的罐子里是否有一些 mistakes/redundancies。
您应该使用 Maven 配置您的应用程序。这样,我们将自动拥有所有必需的依赖项(包括传递依赖项的依赖项)。
对于您的情况,我们可以在您的文件中使用类似的内容 pom.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<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>org.restlet</groupId>
<artifactId>restlet-maven-sample</artifactId>
<name>${project.artifactId}</name>
<packaging>war</packaging>
<version>1.0.0-snapshot</version>
<properties>
<restlet-version>2.3.1</restlet-version>
</properties>
<dependencies>
<dependency>
<groupId>org.restlet.jee</groupId>
<artifactId>org.restlet</artifactId>
<version>${restlet-version}</version>
</dependency>
<dependency>
<groupId>org.restlet.jee</groupId>
<artifactId>org.restlet.ext.jackson</artifactId>
<version>${restlet-version}</version>
</dependency>
<dependency>
<groupId>org.restlet.jee</groupId>
<artifactId>org.restlet.ext.servlet</artifactId>
<version>${restlet-version}</version>
</dependency>
<dependency>
<groupId>org.restlet.jee</groupId>
<artifactId>org.restlet.ext.xml</artifactId>
<version>${restlet-version}</version>
</dependency>
</dependencies>
<repositories>
<repository>
<id>maven-restlet</id>
<name>Public online Restlet repository</name>
<url>http://maven.restlet.com</url>
</repository>
</repositories>
</project>
希望对你有帮助,
蒂埃里
我正在尝试使用以下 Java 代码让 Restlet 与 Jackson 一起工作:
public class HelloWorldResource extends ServerResource{
@Get("json")
public Todo represent()
{
Todo t = new Todo();
t.setId("1");
t.setDescription("hello");
t.setSummary("world");
return t;
}
//...
}
当我 运行 程序时出现错误:
java.lang.NoClassDefFoundError: org/codehaus/jackson/JsonFactory
这些是我正在使用的罐子:
为什么找不到依赖项?
编辑:
我通过将此 jar 添加到类路径来解决问题。
我仍然想知道我要添加的罐子里是否有一些 mistakes/redundancies。
您应该使用 Maven 配置您的应用程序。这样,我们将自动拥有所有必需的依赖项(包括传递依赖项的依赖项)。
对于您的情况,我们可以在您的文件中使用类似的内容 pom.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<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>org.restlet</groupId>
<artifactId>restlet-maven-sample</artifactId>
<name>${project.artifactId}</name>
<packaging>war</packaging>
<version>1.0.0-snapshot</version>
<properties>
<restlet-version>2.3.1</restlet-version>
</properties>
<dependencies>
<dependency>
<groupId>org.restlet.jee</groupId>
<artifactId>org.restlet</artifactId>
<version>${restlet-version}</version>
</dependency>
<dependency>
<groupId>org.restlet.jee</groupId>
<artifactId>org.restlet.ext.jackson</artifactId>
<version>${restlet-version}</version>
</dependency>
<dependency>
<groupId>org.restlet.jee</groupId>
<artifactId>org.restlet.ext.servlet</artifactId>
<version>${restlet-version}</version>
</dependency>
<dependency>
<groupId>org.restlet.jee</groupId>
<artifactId>org.restlet.ext.xml</artifactId>
<version>${restlet-version}</version>
</dependency>
</dependencies>
<repositories>
<repository>
<id>maven-restlet</id>
<name>Public online Restlet repository</name>
<url>http://maven.restlet.com</url>
</repository>
</repositories>
</project>
希望对你有帮助, 蒂埃里