GSON没有被导入到maven项目中

时间:2012-07-09 20:30:01

标签: java json servlets maven gson

我收到以下错误 - 我在我的依赖项中添加了GSon -

有人可以指出我做错了吗?

enter image description here

编辑:指定依赖项 -

   <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>1.7.1</version>
    </dependency>

我在我的sevlet中使用以下代码 -

 JSONService json = new JSONService();
    String json_output = json.makeLoginJSON(user);

makeLoginJSON ---

   public String makeLoginJSON(LoginDetails user) {
    String FinalJson = null;
    Gson gson = new Gson();
    FinalJson = gson.toJson(user);      
    return FinalJson;       
}

4 个答案:

答案 0 :(得分:16)

尝试:

<dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.1</version>
        <scope>provided</scope>
</dependency>

我已编辑了我的评论并添加了范围。默认范围是 compile ,这意味着在运行时不存在依赖关系。为此,您使用提供的范围。有关Apache Introduction to Maven Dependencies的maven依赖关系中的范围的更多信息。

希望这可以解决您的问题。

P.S。:如果您要创建自己的存储库,还应该查看here

答案 1 :(得分:3)

只是澄清一下劳尔的答案 - 很好,它适用于你,但提供是针对预期可从JRE / JDK获得的依赖关系,即servlet类。编译是默认的,并且应该在其他人的情况下工作,因为gson不能从JRE获得,而是需要由maven下载。来自http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope

<强>编译 这是默认范围,如果未指定,则使用此范围。编译依赖项在项目的所有类路径中都可用。此外,这些依赖项将传播到依赖项目。

<强>提供 这很像compile,但表示您希望JDK或容器在运行时提供依赖性。例如,在为Java Enterprise Edition构建Web应用程序时,您可以将Servlet API和相关Java EE API的依赖关系设置为提供的范围,因为Web容器提供了这些类。此范围仅在编译和测试类路径中可用,并且不可传递。

<强>运行时 此范围表示编译不需要依赖项,但是用于执行。它位于运行时和测试类路径中,但不是编译类路径。

<强>测试 此范围表示正常使用应用程序不需要依赖关系,并且仅适用于测试编译和执行阶段。

<强>系统 此范围与提供的类似,只是您必须提供明确包含它的JAR。工件始终可用,不会在存储库中查找。

导入(仅适用于Maven 2.0.9或更高版本) 此范围仅用于节中pom类型的依赖项。它表示应该用该POM部分中的依赖项替换指定的POM。由于它们被替换,具有导入范围的依赖性实际上并不参与限制依赖的传递性。

答案 2 :(得分:0)

添加以下导入:

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

答案 3 :(得分:-1)

尝试:

<dependency>
     <groupId>com.alibaba</groupId>
     <artifactId>fastjson</artifactId>
     <version>1.1.21</version>
</dependency>

速度快,使用简单。

VO obj = ...;
String jsonString = JSON.toJSONString(obj);

VO obj2 = JSON.parseObject(jsonString, VO.class);