2013-08-16 4 views
18

जब मैं JDK 7 के साथ एक Json परीक्षण कार्यक्रम चलाने के लिए, यह कहते हैं:क्यों Json परीक्षण कार्यक्रम काम नहीं करता है?

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)" 

मैंने शामिल किया है "javax.json-api-1.0.jar" मेरी परियोजना में।

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; 
    } 
    } 
} 

यह एक साधारण कार्यक्रम है, गैल्सफ़िश का उपयोग नहीं करते, ग्लासफ़िश का उल्लेख क्यों किया जाता है?

उत्तर

39

javax.json-api-1.0.jar केवल API जो संकलन समय निर्भरता के लिए नहीं है शामिल हैं। लेकिन अगर आप अपने अनुप्रयोग चलाना चाहते हैं, तो आप एक provider/impl वर्गों की जरूरत है।

org.glassfish:javax.json जार आप की जरूरत है कि दोनों api + impl कक्षाएं शामिल हैं।

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

See this thread for more details

+1

है, समझ लिया धन्यवाद! – Frank

+1

महान, यह मेरे लिए :) – Yashasvi

+3

डीएल पेज काम किया: 1.0.4 के लिए https://repo1.maven.org/maven2/org/glassfish/javax.json/ –

संबंधित मुद्दे