GSON не импортируется в Maven pproject

Я получаю следующую ошибку - я добавил GSon в свою зависимость -

может кто-нибудь указать, что я делаю неправильно?

enter image description here

Edit: указанная зависимость -

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

3 ответов


попробуй:

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

я отредактировал свой комментарий и добавил область. Область по умолчанию -compile, что означает, что зависимость отсутствует во время выполнения. Для этого, вы используете предоставил объем. Подробнее о области в зависимостях maven от Apache's введение в зависимости Maven.

надеюсь, это решит вашу проблему.

P. S.: Если вы создаете свой собственный репозиторий, вы также должны взглянуть здесь.


просто уточнение ответа Рауля-хорошо, что он работает для вас, но предоставил для зависимостей, которые, как ожидается, будут доступны из классов сервлетов JRE/JDK, т. е. Компиляция по умолчанию и должна работать в случаях других людей, так как gson недоступен из JRE, вместо этого он должен быть загружен maven. От http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope:

compile Это область по умолчанию, используемая, если она не указана. Зависимости компиляции доступны во всех путях классов проекта. Кроме того, эти зависимости распространяются на зависимые проекты.

предоставил Это очень похоже на компиляцию, но указывает, что вы ожидаете JDK или контейнер, чтобы обеспечить зависимостей в во время выполнения. Например, при создании веб-приложения для Java Enterprise Edition необходимо установить зависимость от API сервлета и связанных API Java EE в область, предоставляемую, поскольку веб-контейнер предоставляет эти классы. Эта область доступна только в пути к классам компиляции и тестирования и не является транзитивной.

время работы Эта область указывает, что зависимость не требуется для компиляции, а предназначена для выполнения. Это в runtime и тест путей к классам, но не путь к классам компиляции.

тест Эта область указывает, что зависимость не требуется для обычного использования приложения и доступна только на этапах компиляции и выполнения теста.

система Эта область аналогична предоставленной, за исключением того, что вы должны предоставить банку, которая содержит ее явно. Артефакт всегда доступен и не просматривается в репозитории.

импорт (только доступно в Maven 2.0.9 или более поздней версии) Эта область используется только для зависимости типа pom в разделе. Это указывает на то, что указанный POM должен быть заменен зависимостями в этом разделе POM. Поскольку они заменяются, зависимости с областью импорта фактически не участвуют в ограничении транзитивности зависимости.


попробуй:

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