2013-09-01 3 views
1

Я использую гуавы 14,0 банку и после мой кодcom.google.common.cache.Cache класс не найдена ошибка

package org.user.module.test; 

import java.io.IOException; 
import java.io.PrintWriter; 
import java.util.concurrent.TimeUnit; 
import com.google.common.cache.CacheBuilder; 
import com.google.common.cache.Cache; 
import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

/** 
* Servlet implementation class test 
*/ 
@WebServlet("/test") 
public class test extends HttpServlet { 
    private static final long serialVersionUID = 1L; 

    Cache<String, Integer> map; 

    public test() { 
     super(); 
     // TODO Auto-generated constructor stub 
    } 

    public void init() throws ServletException 
    { 
     map=CacheBuilder.newBuilder(). 
       maximumSize(100). 
       expireAfterAccess(10, TimeUnit.MINUTES). 
       build(); 

    } 

    /** 
    * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 
    */ 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     PrintWriter out=response.getWriter(); 
     String p=request.getParameter("v"); 
     Integer a=map.getIfPresent(p); 
     if(a==null){ 
      map.put(p, 1); 
      out.println("Putting The Integer:"+a); 
     } 
     else{ 
      map.put(p,a++); 
      out.println("A is already present and the value is:"+a); 
     } 

    } 

    /** 
    * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 
    */ 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     doGet(request,response); 
    } 

} 

Ошибка:

SEVERE: Allocate exception for servlet org.user.module.test.test java.lang.ClassNotFoundException: com.google.common.cache.Cache at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1701) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1546) at java.lang.Class.getDeclaredFields0(Native Method) at java.lang.Class.privateGetDeclaredFields(Class.java:2317) at java.lang.Class.getDeclaredFields(Class.java:1762) at org.apache.catalina.core.DefaultInstanceManager.populateAnnotationsCache(DefaultInstanceManager.java:276) at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:143) at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:125) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1136) at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:857) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:135) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:722)

скачано баночка здесь Downlaod Link Link к моей папке проекта (название проекта: test2) LINK

+0

Где вы разместили файл JAR? –

+0

Я щелкнул правой кнопкой мыши по проекту-> Настроить путь сборки-> добавить библиотеку-> и выбрать guava. Его в папке lib внутри проекта. Посмотрите на ссылку, которую я отредактировал – user2736993

+0

Ваша папка lib должна находиться в папке '/ WebContent/WEB-INF'. В настоящее время вы работаете в Java Resources. Удалите его оттуда. –

ответ

3

Очевидный ответ: Google guava jar не найден из класса, продиктованного сервером приложений. Банкомат должен присутствовать либо в WEB-INF/classes, либо WEB-INF/lib. Apache Tomcat также загружает общие классы из $ CATALINA_HOME/lib папка.

+3

Ящики не входят/классы. Классы делают. –

+0

@ ThorbjørnRavnAndersen вы абсолютно правы. Например, хорошо управлять консистенцией. в случае запуска приложения в режиме отладки, «горячей» замены или переопределения классов. – Heikki

+1

Спасибо, что указали имя банщика! Плохо документированные зависимости приводят к осложнениям при попытке импортировать пакет: p –

Смежные вопросы