Dav*_*ock 15 java servlets compiler-errors classpath
我的编译器无法找到HttpServletRequest getServletContext()方法.
我没有做太复杂的事情:
public static void setMySortedSet(HttpServletRequest request, SortedSet<String> set)
{
setMySortedSet(request.getServletContext(), set);
}
Run Code Online (Sandbox Code Playgroud)
我尝试了一些故障排除:
当我使用Eclipse时,找到了该方法,但是当我尝试构建类时,我看到了这个:
compile:
[javac] Compiling 1 source files to C:\...\workspace\proj\build\WEB-INF\classes
[javac] C:\...\workspace\proj\src\main\Helper.java:26: cannot find symbol
[javac] symbol : method getServletContext()
[javac] location: interface javax.servlet.http.HttpServletRequest
[javac] return getURISet(request.getServletContext());
[javac] ^
[javac] Note: C:\...\workspace\proj\src\main\Helper.java uses unchecked or unsafe operations.
[javac] Note: Recompile with -Xlint:unchecked for details.
[javac] 1 error
Run Code Online (Sandbox Code Playgroud)
我可能缺少什么想法?我感谢任何回应.
小智 26
该getServletContext()方法在Servlet 3.0中引入,而不是2.3.但是,如果你想得到ServletContext它的替代方法是:
ServletContext context = request.getSession().getServletContext();
if (username != "" & username != null ) {
context.setAttribute("savedUserName", username);
}
writer.println("Context Parameter : " + (String)context.getAttribute("savedUserName"));
Run Code Online (Sandbox Code Playgroud)
这样您就可以在不同的浏览器中获取存储的请求参数值....
Bal*_*usC 17
根据Javadoc,该ServletRequest#getServletContext()方法在Servlet 3.0中引入,而不是2.3.您需要在Eclipse中安装和集成Servlet 3.0兼容容器(如Tomcat 7,Glassfish 3等),并将Dynamic Web Project 的Target Runtime设置为该容器.当你正确地执行此操作时,您不需要手动编写构建路径,或者根本不需要build.xmlEclipse自动处理它.您也不需要下载不同make/version的任意servletcontainer的松散JAR文件,并将其放在buildpath中.它只会导致未来的类路径和可移植性问题.