我想知道当多个依赖路径可以导致同一个类时,jetty如何处理。
例如,
Jetty预先打包了JSTL-1.2,但我添加了一个依赖项来加载JSTL-1.2.4。在编译时,如果我在断点测试它在eclipse中下载源代码,它会在1.2.4版本中断。
我想知道哪个版本将被传递以生成JSP的字节代码,当有两个版本的类时,比如某个基类 JstlCoreTlv 依赖(一个预打包,即带有码头的JSTL 1.2和来自maven依赖的1.2.4)
简而言之,我想知道码头是如何做到的。我想知道jetty如何优先考虑预先打包和后来添加的依赖项。即使版本比预先打包的版本旧,它是否会覆盖并引用添加的依赖项?
在这种情况下,我从jetty文档中得不到多少。非常感谢帮助
答案 0 :(得分:4)
如果你使用maven编译和打包1.2.4并在Jetty上部署打包的war,Jetty将使用1.2(这是服务器类路径上的那个而不是1.2.4(因为它不适用于Jetty)。这可能会导致问题。
避免出现问题的最佳方法是在maven项目依赖项中使用完全相同的版本,因为您将部署的Jetty版本使用该版本。
答案 1 :(得分:4)
servlet规范要求:
WEB-INF类可以替换Server类。
这里的服务器类是j2ee标准的跳码实现(来自jetty source code的代码):
/** Is the class a Server Class.
* A Server class is a class that is part of the implementation of
* the server and is NIT visible to a webapplication. The web
* application may provide it's own implementation of the class,
* to be loaded from WEB-INF/lib or WEB-INF/classes
* @param clazz The fully qualified name of the class.
* @return True if the class is a server class.
*/
boolean isServerClass(Class<?> clazz);
您还可以通过调用:
添加对服务器类的控制