我正在研究" Restlet in action"书。我不使用任何IDE,Maven或其他东西。只是一个纯粹的命令行。问题显示在资源类:
import java.io.IOException;
import org.restlet.data.Reference;
import org.restlet.ext.jackson.JacksonRepresentation;
import org.restlet.representation.Representation;
import org.restlet.resource.Get;
import org.restlet.resource.Put;
import org.restlet.resource.ServerResource;
public class MailServerResource extends ServerResource {
@Get
public Representation toJson() {
// Create the mail bean
Mail mail = new Mail();
mail.setStatus("received");
mail.setSubject("Message to self");
mail.setContent("Doh!");
mail.setAccountRef(new Reference(getReference(), "..").getTargetRef()
.toString());
// Wraps the bean with a Jackson representation
return new JacksonRepresentation<Mail>(mail);
}
@Put
public void store(Representation rep) throws IOException {
// Parse the JSON representation to get the mail bean
JacksonRepresentation<Mail> mailRep = new JacksonRepresentation<Mail>(
rep, Mail.class);
Mail mail = mailRep.getObject();
// Output the JSON element values
System.out.println("Status: " + mail.getStatus());
System.out.println("Subject: " + mail.getSubject());
System.out.println("Content: " + mail.getContent());
System.out.println("Account URI: " + mail.getAccountRef());
}
}
可以编译包含此类的应用程序。但我有一个运行时异常,表明缺少库。每次我添加缺少的库时,我都会遇到新的和新的异常,迫使我添加新的和新的库。这似乎无穷无尽。例如:
org.restlet.resource.ResourceException:内部服务器错误(500)引起:java.lang.NoClassDefFoundError:com / fasterxml / jackson / core / JsonFactory
由java.lang.NoClassDefFoundError引起的同样错误:com / fasterxml / jackson / dataformat / smile / SmileFactory
由java.lang.NoClassDefFoundError引起的同样错误:com / fasterxml / jackson / databind / ObjectMapper
由java.lang.NoClassDefFoundError引起的同样错误:com / fasterxml / jackson / dataformat / xml / XmlMapper
它看起来很奇怪,因为Restlet框架中缺少这个库。所以我希望不应该在书中使用它。但无论如何我还要进一步添加从网上下载的这个库:
由java.lang.NoClassDefFoundError引起的同样错误:com / fasterxml / jackson / dataformat / yaml / YAMLFactory
我放弃并向你寻求帮助......
答案 0 :(得分:2)
嗯,确切地说,你有构建工具来管理传递依赖,如Gradle,Ant + Ivy或Maven(从最差到最差的顺序)。
如果您想坚持纯命令行,请阅读您使用的库的文档,以查看它们具有哪些依赖项,或者它们是否提供包含所有依赖项的分发包,然后添加所有这些,您应该没问题。< / p>
答案 1 :(得分:1)
根据导入,org.restlet.jar
和org.restlet.ext.jackson.jar
都是必需的。第一个用于基础框架,第二个用于支持jackson功能。
也许您还需要其他罐子,但您可以在从restlet下载的zip文件中找到所有这些罐子。下载并解压缩它,jars位于lib
文件夹中。