java.util.MissingResourceException: impossible de trouver le bundle de base nom javax.servlet.LocalStrings, de la locale fr_fr

Je suis en train d'effectuer quelques test jUnit dans un de mes servlets mais à chaque fois que j'essaie de le lancer je obtenir un ExceptionInInitializerError. J'ai lu que cette erreur est due à une exception s'est produite lors de l'évaluation d'un initialiseur statique ou l'initialiseur, pour une variable statique. Le truc, c'est que même si j'ai essayé de résoudre ce que je peux. C'est pourquoi je suis en train d'écrire ici: ma servlet code est le suivant:

public class AppServlet extends HttpServlet {
//<editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/**
* Handles the HTTP <code>GET</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
//obtenemos los valores de los campos del formulario.
String usr = request.getParameter("usrName");
String cp = request.getParameter("codigoPostal");
Gson gson = new Gson();
if (usr == null || cp == null || cp.length() != 5) {
Result r = new Result("KO", "No se introdujeron bien los datos");
String jsonString = gson.toJson(r);
out.println(jsonString);
return;
}
//procedemos a convertir el codigo postal en la ciudad usando geonames:
//para ello usaremos la api de geonames
String city = geoLocalize.localizeCity(cp);
//empezaremos con el codigo de depuración para ver donde podemos tener errores
if (city == null) {
Result r = new Result("KO", "No hay ciudad para dicho codigo postal");
String jsonString = gson.toJson(r);
out.println(jsonString);
return;
}
//comenzamos con las bases de datos
SQLconnection db = new SQLconnection();
//una vez creada la conexion deberemos hacer las insert en las tablas.
if (!db.checkUsr(usr)) {
if (db.insertUsr(usr)) {
int numCp = parseInt(cp);
if (!db.checkCP(numCp)) {
if (db.addCity(numCp, city)) {
Result r = new Result("OK", "Proceso terminado sin problemas");
String jsonString = gson.toJson(r);
out.println(jsonString);
return;
} else {
Result r = new Result("KO", "No se ha podido añadir la ciudad");
String jsonString = gson.toJson(r);
out.println(jsonString);
return;
}
} else {
Result r = new Result("OK", "Se ha añadido el usuario, el codigo postal ya estaba");
String jsonString = gson.toJson(r);
out.println(jsonString);
return;
}
} else {
Result r = new Result("KO", "No se ha podido añadir el usuario");
String jsonString = gson.toJson(r);
out.println(jsonString);
return;
}
} else {
Result r = new Result("KO", "El usuario ya existe en el sistema");
String jsonString = gson.toJson(r);
out.println(jsonString);
return;
}
} catch (IOException | NumberFormatException ex) {
Logger.getLogger(AppServlet.class.getName()).log(Level.SEVERE, null, ex);
} catch (Exception ex) {
Logger.getLogger(AppServlet.class.getName()).log(Level.SEVERE, null, ex);
}
}

}

Et mon test jUnit code est le suivant:

public class AppServletTest extends TestCase {
HttpServletRequest request;
HttpServletResponse response;
AppServlet instance;
public AppServletTest(String testName) {
super(testName);
}
@Override
protected void setUp() throws Exception {
request = mock(HttpServletRequest.class);
response = mock(HttpServletResponse.class);
instance = new AppServlet();
super.setUp();
}
@Override
protected void tearDown() throws Exception {
super.tearDown();
}
/**
* Test of doGet method, of class AppServlet.
*
* @throws java.lang.Exception
*/
public void testDoGet() throws Exception {
System.out.println("doGet");
//generamos los parametros y un .txt donde guardaremos la respuesta JSON
when(request.getParameter("usrName")).thenReturn("Javi");
when(request.getParameter("codigoPostal")).thenReturn("48991");
PrintWriter writer = new PrintWriter("resultadoPruebas.txt");
when(response.getWriter()).thenReturn(writer);
//mandamos la peticion al servlet
instance.doGet(request, response);
verify(request, atLeast(1)).getParameter("usrName"); //para verificar si se ha llamado a usrName
writer.flush(); //it may not have been flushed yet...
assertTrue(FileUtils.fileRead(new File("somefile.txt"), "UTF-8")
.contains("OK"));
}

}

Un ici, c'est la pleine stacktrace:

java.lang.ExceptionInInitializerError
at com.jbo.testapp.AppServletTest.setUp(AppServletTest.java:36)
at junit.framework.TestCase.runBare(TestCase.java:128)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:120)
at junit.framework.TestSuite.runTest(TestSuite.java:230)
at junit.framework.TestSuite.run(TestSuite.java:225)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.apache.maven.surefire.junit.JUnitTestSet.execute(JUnitTestSet.java:96)
at org.apache.maven.surefire.junit.JUnit3Provider.executeTestSet(JUnit3Provider.java:117)
at org.apache.maven.surefire.junit.JUnit3Provider.invoke(JUnit3Provider.java:94)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:164)
at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:110)
at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:175)
at 
org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcessWhenForked(SurefireStarter.java:107)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:68)
Caused by: java.util.MissingResourceException: Can't find bundle for base name javax.servlet.LocalStrings, locale es_ES
at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1564)
at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1387)
at java.util.ResourceBundle.getBundle(ResourceBundle.java:773)
at javax.servlet.GenericServlet.<clinit>(GenericServlet.java:95)
... 24 more
Caused by: java.util.MissingResourceException: Can't find bundle for base name javax.servlet.LocalStrings, locale es_ES
at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1564)
at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1387)
at java.util.ResourceBundle.getBundle(ResourceBundle.java:773)
at javax.servlet.GenericServlet.<clinit>(GenericServlet.java:95)
... 24 more

Espère que vous les gars peut m'aider!
Je vous remercie à l'avance

Ajoutez le plein stacktrace s'il vous plaît.
là vous allez! ajouté 🙂

OriginalL'auteur Javi Bsr | 2015-07-22