2016-05-18 11 views
1

Mavenを使用してGoogleからGsonライブラリをインポートしようとしましたが、Webアプリケーションを実行するとGsonクラスが見つからないというエラーが表示されます。私はGsonライブラリのスコープのために提供しようとしましたが、何もしませんでした。Java ServletでMavenを使用しているクラスが見つかりません

のpom.xml

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>groupId</groupId> 
    <artifactId>Skeleton</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <dependencies> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>servlet-api</artifactId> 
      <version>2.5</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>com.google.code.gson</groupId> 
      <artifactId>gson</artifactId> 
      <version>2.6.2</version> 
      <scope>compile</scope> 
     </dependency> 
    </dependencies> 
</project> 

TestServlet.java

package servlets; 

import com.google.gson.Gson; 
import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import java.io.IOException; 
import java.util.ArrayList; 
import java.util.List; 

/** 
* Created by Philippe on 2016-05-10. 
*/ 
@WebServlet(name = "/TestServlet") 
public class TestServlet extends HttpServlet { 
    private static final long serialVersionUID = 1L; 

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 

    } 

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     List<String> list = new ArrayList<String>() ; 
     list.add("item1"); 
     list.add("item2"); 
     Gson gson = new Gson() ; 
     String json = gson.toJson(list) ; 
     response.setContentType("application/json"); 
     response.setCharacterEncoding("UTF-8"); 
     response.getWriter().write(json); 
    } 
} 

ログ

にjava.lang.ClassNotFoundException:com.google.gson.Gson 〜でservlets.TestServlet.doGetで org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1305) org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1139) で(TestServlet。 Javaの:34) javax.servlet.http.HttpServlet.service(HttpServlet.java:622)で javax.servlet.http.HttpServlet.service(HttpServlet.java:729)

で何が私はあります行方不明?

+0

"mvn clean install"を実行しようとしましたか? –

+0

注:「提供される」とは、「ターゲットランタイムが既に提供している」ことを意味します。 https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_ScopeターゲットランタイムはTomcatです。それはボックスからGsonを提供しないので、あなたはwebapp経由でそれを提供しなければなりません。 – BalusC

+0

答えをいただきありがとうございます。なぜ、提供が何もしなかったのは私にははっきりしています。それは愚かな質問かもしれませんが、Mavenを私の依存関係に入れればGsonを提供するはずです。私の問題を解決するために何をすべきですか? –

答えて

0

siteに記載されているように<scope>compile</scope>を削除してみてください。

<!-- http://mvnrepository.com/artifact/com.google.code.gson/gson --> 
<dependency> 
    <groupId>com.google.code.gson</groupId> 
    <artifactId>gson</artifactId> 
    <version>2.6.2</version> 
</dependency> 
関連する問題