gpt4 book ai didi

java.util.MissingResourceException : Can't find bundle for base name javax. servlet.LocalStrings,语言环境 es_ES

转载 作者:太空狗 更新时间:2023-10-29 23:02:40 28 4
gpt4 key购买 nike

我正在尝试在我的一个 servlet 中执行一些 jUnit 测试,但每当我尝试运行它时,我都会收到 ExceptionInInitializerError。我读到这个错误是由于异常引起的,发生在评估静态初始值设定项或静态变量初始值设定项期间。问题是,即使我试图修复它,我也可以。这就是我在这里写的原因:我的 servlet 代码如下:

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

我的 jUnit 测试代码如下:

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


}

这是完整的堆栈跟踪:

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

希望大家帮帮我!提前谢谢你

最佳答案

Caused by: java.util.MissingResourceException: Can't find bundle for base name javax.servlet.LocalStrings, locale es_ES

这才是真正的错误。

您正在运行的测试缺少 servlet-api 依赖项。

如果您使用的是 Maven,请确保此依赖项在您的项目中:

<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>

关于java.util.MissingResourceException : Can't find bundle for base name javax. servlet.LocalStrings,语言环境 es_ES,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31561603/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com