2013-08-16 38 views
18

Khi tôi chạy một chương trình thử nghiệm Json với jdk 7, nó nói:Tại sao chương trình thử nghiệm Json không hoạt động?

Exception in thread "main" javax.json.JsonException: Provider org.glassfish.json.JsonProviderImpl not found 
    at javax.json.spi.JsonProvider.provider(JsonProvider.java:97) 
    at javax.json.Json.createArrayBuilder(Json.java:257)" 

Tôi đã bao gồm "javax.json-api-1.0.jar" trong dự án của tôi.

import javax.json.Json; 
import javax.json.JsonArray; 
import javax.json.JsonArrayBuilder; 
import java.io.Serializable; 
import java.util.ArrayList; 
import java.util.Date; 
import java.util.List; 

public class JsonExample 
{ 
    public static void main(String[] args) 
    { 
    List<User> users=getUsers(); 

    // build JSON 
    JsonArrayBuilder jsonArrayBuilder=Json.createArrayBuilder(); 
    for (User user : users) 
    { 
     jsonArrayBuilder.add(
     Json.createObjectBuilder() 
     .add("id",user.getId()) 
     .add("name",user.getName()) 
     .add("join",user.getJoin().getTime())); 
    } 

    JsonArray usersJson=jsonArrayBuilder.build(); 

    System.out.println(usersJson.toString()); 

    } 

    // dummy users 
    public static List<User> getUsers() 
    { 
    List<User> users=new ArrayList<User>(10); 
    User user=new User(); 
    user.setId(1); 
    user.setName("Hero"); 
    user.setJoin(new Date()); 
    users.add(user); 

    user=new User(); 
    user.setId(2); 
    user.setName("Citizen"); 
    user.setJoin(new Date()); 
    users.add(user); 

    return users; 
    } 

    // POJO 
    public static class User implements Serializable 
    { 
    private long id; 
    private String name; 
    private Date join; 

    public long getId() 
    { 
     return id; 
    } 

    public void setId(long id) 
    { 
     this.id=id; 
    } 

    public String getName() 
    { 
     return name; 
    } 

    public void setName(String name) 
    { 
     this.name=name; 
    } 

    public Date getJoin() 
    { 
     return join; 
    } 

    public void setJoin(Date join) 
    { 
     this.join=join; 
    } 
    } 
} 

Đó là một chương trình đơn giản, không sử dụng galssfish, tại sao loài thủy tinh được đề cập ở đây?

Trả lời

39

javax.json-api-1.0.jar chỉ chứa API có sẵn để phụ thuộc thời gian biên dịch. Nhưng nếu bạn muốn chạy ứng dụng của mình, bạn cần một lớp học provider/impl.

org.glassfish:javax.json là bình bạn cần có chứa cả hai lớp api + impl.

<dependency> 
    <groupId>org.glassfish</groupId> 
    <artifactId>javax.json</artifactId> 
    <version>1.0.4</version> 
</dependency> 

See this thread for more details.

+1

OK, cảm ơn! – Frank

+1

tuyệt vời, nó làm việc cho tôi :) – Yashasvi

+3

Trang DL: https://repo1.maven.org/maven2/org/glassfish/javax.json/ –

Các vấn đề liên quan