GSON 没有被导入到 Maven 项目中

Posted

技术标签:

【中文标题】GSON 没有被导入到 Maven 项目中【英文标题】:GSON is not being imported into the maven project 【发布时间】:2012-07-09 07:10:36 【问题描述】:

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

谁能指出我做错了什么?

编辑:指定的依赖项 -

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

【问题讨论】:

你的 maven 依赖声明是什么? 你用什么来构建你的项目?请发布您的依赖配置 是可以访问的,请尝试更新maven依赖,如果不行,请尝试从本地maven仓库中删除包并强制重新下载。尝试新版本也可以。 您可以尝试将依赖项的范围显式设置为“编译”,但我认为默认情况下应该是这样。除非它已在您的设置中的其他地方被覆盖 我已经编辑了我的评论并为依赖项添加了一个 。请立即检查。 【参考方案1】:

试试:

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

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

希望这能解决您的问题。

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

【讨论】:

Eclipse 没有给我任何错误...我可以执行“import com.google.gson.Gson;” 您是否尝试手动将 Gson 库添加到项目的类路径中?这样您就可以了解这是否是关于 Maven 的问题。我认为这很可能是一个类路径问题,尽管 Maven 应该理论上解决这个问题(参见:***.com/questions/4961336/…)【参考方案2】:

只是对 Raul 的回答的澄清 - 它对您有用,但 provided 适用于预期可从 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。工件始终可用,不会在存储库中查找。

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

【讨论】:

【参考方案3】:

添加这些导入:

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

【讨论】:

【参考方案4】:

试试:

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

【讨论】:

投反对票,因为这不是问题的答案。

以上是关于GSON 没有被导入到 Maven 项目中的主要内容,如果未能解决你的问题,请参考以下文章

安卓项目怎么导入gson

Java Gson .add函数没有采用String参数(maven项目)

三十Maven跟我学编程

IDEA maven中引入的依赖不自动导入项目

idea导入的maven工程,每个实体中类名就会变红 啥原因

IDEA导入eclipse项目并部署到tomcat