我正在研究「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());
}
}
包含此類的應用程序可以被編譯。但我有一個運行時異常,指出缺少的庫。每次添加缺失的庫時,我都會得到新的和新的異常,迫使我添加新的和新的庫。它似乎是無止境的。例如:
- 第一次編譯和運行應用程序的結果:OK。運行時錯誤而試圖從瀏覽器中的資源:
org.restlet.resource.ResourceException:內部服務器錯誤(500)產生的原因:java.lang.NoClassDefFoundError:COM/fasterxml /傑克遜/核心/ JsonFactory
- 將com.fasterxml.jackson.core.jar添加到編譯命令並運行命令後的結果:OK。運行時錯誤:
由java.lang.NoClassDefFoundError致毒相同的錯誤:COM/fasterxml /傑克遜/ DATAFORMAT /微笑/ SmileFactory
加入COM後- 結果。使用fasterxml.jackson.smile.jar編譯命令並運行命令:OK。運行時錯誤:
- 加入com.fasterxml之後的結果。 jackson.databind.jar編譯命令並運行命令:OK。運行時錯誤:
- 添加jackson-dataformat-xml-2.8.5.jar編譯命令並運行命令後的結果:好。運行時錯誤:
由java.lang.NoClassDefFoundError致毒相同的錯誤:COM/fasterxml /傑克遜/數據綁定/ ObjectMapper
相同的錯誤由java.lang.NoClassDefFoundError致毒:COM/fasterxml /傑克遜/ DATAFORMAT/XML/XmlMapper
而且因爲這個庫中的Restlet框架中缺失的這看起來很奇怪。所以我希望它不應該用在本書的例子中。但我無論如何去添加這個從網上下載的庫:
由java.lang.NoClassDefFoundError致毒了同樣的錯誤:COM/fasterxml /傑克遜/ DATAFORMAT/YAML/YAMLFactory
我放棄,請你幫忙......
請注意,您不需要爲編譯命令添加額外的依賴關係 - 只要它編譯成功,編譯時類路徑就是正確的,從那時起,您只需將額外的依賴關係添加到運行時類路徑中即可。 – haggisandchips