- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我收到以下错误:
INFO: validateJarFile(C:\dev\server\tomcat6\webapps Sempedia\WEB-INF\lib\servlet-api.jar) - jar not loaded. See Servlet Spec 2.3, sectoin 9.7.2. Offending class: javax/servlet/Servlet.class
现有资源说这是由于与 servlet.jar 或在我的情况下名为 servlet-api.jar 文件的冲突。我已经从/webapps 文件夹中删除了所有其他项目,我已经获取了 tomcat6/lib 目录中的 servlet-api.jar 文件并将其添加到项目构建路径中,所以我看不到那里仍然是冲突。
当我尝试运行应用程序时,我得到以下堆栈跟踪。
org.apache.jasper.JasperException:无法为 JSP 编译类:
An error occurred at line: 22 in the generated java file The method getJspApplicationContext(ServletContext) is undefined for the type JspFactory
Stacktrace:
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92) org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330) org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:439) org.apache.jasper.compiler.Compiler.compile(Compiler.java:334) org.apache.jasper.compiler.Compiler.compile(Compiler.java:312) org.apache.jasper.compiler.Compiler.compile(Compiler.java:299) org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:586) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267) javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
最佳答案
这是类路径污染的标志。 JSP/Servlet API 库依赖于 appserver 实现,并且在 Tomcat 6 的情况下属于 Tomcat/lib
文件夹中,并且应该不得移动或复制到其他地方。这是您现在遇到的类加载中的可移植性问题和冲突的秘诀。 webapp 中的库在类加载方面具有优先权。如果 servlet-api.jar
在那里遇到,它会依次在那里寻找它的依赖关系,但它们显然在那里丢失了。
您必须从 webapp 的 Webapp/WEB-INF/lib
中删除任何特定于 appserver 的库。您应该只将特定于 webapp 的库放在那里。将特定于应用服务器的库保存在应用服务器自己的默认类路径中,在您的情况下是 Tomcat/lib
。保持不动。您最多可以添加您想在其中的所有 webapps 之间共享的库,或者更好的是,在 Tomcat/conf/catalina.properties
中配置 shared.loader
为此。
如果有的话,还要从 JDK/lib
和 JRE/lib
文件夹中删除任何特定于 appserver 的库和特定于 webapp 的库。我经常看到一些初学者在那里移动/复制库,因为“否则它无法编译”。您永远不应该在其中复制非 JRK/JRE 特定的库。这也是便携性问题的良方。使用javac
编译类时,应使用-cp
参数指定依赖库。
更新:如果是 IDE(您在谈论“构建路径”时似乎使用了一个),您需要将 Web 项目与应用程序服务器相关联。例如,在 Eclipse 中,您可以选择在创建 Dynamic Web Project 期间执行此操作。在创建项目之前,您需要在 Eclipse 中集成服务器实例。您可以通过 Servers
View 执行此操作(假设您使用 Eclipse for Java EE 开发人员,否则升级)。之后您也可以通过项目属性中的 Servers 条目对其进行更改。选择一个您想用作“默认”服务器的服务器,然后它的库将自动包含在项目的构建路径中。绝对没有必要将它们复制/移动到其他地方。另见 How do I import the javax.servlet API in my Eclipse project?
关于java - 错误 : Servlet Jar not Loaded. .. 违规类 : javax/servlet/Servlet. 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1993493/
我想澄清一些关于违反 MVVM 的问题。因此,我创建了一个解决方案,其中包含一些项目来演示这些案例。 这是解决方案的定义(项目): View (它是一个 WPF 类库,显然它有 View ) View
这个比较器方法有什么问题? 我已阅读: Java error: Comparison method violates its general contract 并理解,如果 c1 > c2,且 c2
public Integer getMaxCount(String id,String type) { String maxCount ="SELECT MAX(ID) AS COUNT FR
代码如下 #include int main() { auto [a] = std::make_tuple(1); return [a]() -> int { return a;
我正在尝试开发一个应用程序,该应用程序将显示缩放以适合屏幕大小的任意图像。但是,在 EDT 上缩放图像会显着降低 UI,因此我决定使用以下代码在后台线程中缩放图像。 final Runnabl
无论如何,是否可以在 Grails 项目中自动查找 I18N 违规?例如, Enabled: 应该被标记,因为它没有使用 获取标签值。 如果 codenarc 对此有规则,那就太好了,但我认为没有。
我想从 Sonar 中排除一些方法(用于分析目的)。 实际上是自动生成的equals()和hashCode()。没有使用大括号等,我并不总是想修复它们。有没有办法只排除某些方法的范围? 最佳答案 您可
我有一些看起来像这样的代码(我用通用变量替换了我的业务变量): Map map = new HashMap(); for (int i = 1; i < 10; i++) { String s
在使用 IList> 时作为方法声明中的参数类型发生 FXCop 违规 It doesnt nest generic type IList> 我该如何解决? 最佳答案 原因是: A nested ty
我有以下代码,我得到了 PMD 违规 SuspiciousEqualsMethodName。 我想知道为什么这会被视为违规? private boolean areEquals(final Objec
令我惊讶的是,Java 有时可以为您检查比较器契约。 例如,当你写一个不遵循传递性的顺序关系时,你得到 java.lang.IllegalArgumentException: Comparison m
我们有一个头文件,其中包含各种浮点精度的一些残差: template struct rsdTarget { static const double value; }; template <> c
我正在尝试更新一篇博客文章,但我从数据库部分收到了唯一的关键错误,然后我没有使用模型并直接访问 ORM,但又没有成功。 这是我具体要编辑的路线 Route::get('/getedit/{slug}'
需要帮助解决 Sonar 问题。我们正在使用一些在 Maven 公共(public)存储库中不存在的第三方 jar。我将它的依赖定义为: api
我开始使用 CheckThreadViolationRepaintManager 来检测 EDT 违规。 它提示: partner = getParameter("partner",generateP
我有 ViewState POJO 类,它们的构造函数带有许多参数。问题是 PMD 对它们抛出 ExcessiveParameterList 违规。 现在,我试图抑制所有以 ViewState.jav
PMD 失败:...规则:UnusedPrivateMethod 优先级:3 避免未使用的私有(private)方法,例如“printMyString(String)” private void an
我写了一个 lisp 程序,它有两个参数,一个目的地和一个 BST 形式的 map 。它在 BST 中搜索目标号码,如果找到目标则打印 (found: path)。如果未找到,则应该打印(未找到:目的
我有以下 Java 方法: private int calculate() { return (bytes[0] & 0xff) + ((bytes[1] & 0xff) << 8); } P
我一直在思考以下问题。考虑两个文件: A.cpp: template void g(T) {} inline void f() { g(1); } B.cpp: template void g(T)
我是一名优秀的程序员,十分优秀!