2013-08-16 31 views
18

当我运行一个JSON测试程序和JDK 7,它说:为什么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; 
    } 
    } 
} 

这是一个简单的程序,不使用galssfish,为什么玻璃鱼在这里提到?

回答

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

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

相关问题