我正在尝试使用以下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添加到类路径来解决了这个问题。
我仍然有兴趣知道我正在添加的罐子中是否存在错误/冗余。
答案 0 :(得分:1)
您应该使用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>
希望它可以帮到你, 亨利