我也许看到了这个问题的类似答案,但我觉得我的情况有所不同.我正在开发一个目前为止工作得很好的Spring MVC应用程序,就是我在我的项目中包含了hadoop api,当我包含hadoop时,当我尝试打开之前工作的初始仪表板页面时,此异常开始发生:
java.lang.AbstractMethodError: javax.servlet.jsp.JspFactory.getJspApplicationContext(Ljavax/servlet/
ServletContext;)Ljavax/servlet/jsp/JspApplicationContext;
org.apache.jsp.ServerInfo_jsp._jspInit(ServerInfo_jsp.java:63)
org.apache.jasper.runtime.HttpJspBase.init(HttpJspBase.java:52)
org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:158)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:336)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:9
Run Code Online (Sandbox Code Playgroud)
以下是我的hadoop依赖关系的样子:
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>0.23.1-mr1-cdh4.0.0b2</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-core</artifactId>
<version>0.23.1-mr1-cdh4.0.0b2</version>
<exclusions>
<exclusion>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty</artifactId>
</exclusion>
<exclusion>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
</exclusion>
</exclusions>
</dependency>
Run Code Online (Sandbox Code Playgroud)
一旦我将它添加到我的应用程序,它就不再可用了,当然没有这些依赖性,事情就会非常顺利.我在这里错过了什么?
我正在阅读AngelikaLangerGenericsFaq的多级外卡.我对语法很困惑.该文件说
该类型
Collection<Pair<String,?>>是泛型Collection接口的具体实例.它是不同类型对的异构集合.它可以包含类型的元素Pair<String,Long>,Pair<String,Date>,Pair<String,Object>,Pair<String,String>,等等等等.换句话说,Collection<Pair<String,?>>包含不同类型的形式的混合对Pair<String,?>.类型
Collection<? extends Pair<String,?>>是通配符参数化类型; 它不代表具体的参数化类型.它代表集合系列中的代表,它是Collection接口的实例化,其中type参数是表单的形式Pair<String,?>.兼容的实例是Collection<Pair<String,Long>>,Collection<Pair<String,String>>,Collection<Pair<String,Object>>,或Collection<Pair<String,?>>.换句话说,我们不知道它所代表的Collection的实例.根据经验,您必须从上到下阅读多级通配符.
我对以下几点感到困惑.
有人可以详细说明这些要点.谢谢.
假期后回来:)带问题.我从读可比接口文档 ComparableDocumentation.我明白,我们使用可比较的,因为它将为我们提供排序和自然排序.在文档中,它被写为.
强烈建议(尽管不要求)自然排序与equals一致.这是因为没有显式比较器的有序集(和有序映射)在与自然顺序与equals不一致的元素(或键)一起使用时表现得"奇怪".特别是,这样的有序集(或有序映射)违反了集合(或映射)的一般契约,它是根据等于方法定义的.
Comparable如何与equals相关.Comparable有compareTo方法和为什么它需要与equals方法一致?我无法理解这个概念.
同样引用消息来源,有人也可以详细说明这一点
例如,如果添加两个键a和b使得(!a.equals(b)&& a.compareTo(b)== 0)到不使用显式比较器的有序集,则第二个add操作返回false (并且有序集的大小不会增加)因为a和b从排序集的角度来看是等价的.
谢谢.
我想了解一下基本机制<ui:remove>。据我所知,<ui:remove>当基本 HTML 内容是 Facelets 页面的一部分时,基本上会结合使用。当你想要的时候,当Facelets页面的渲染发生时,它应该忽略这部分HTML代码,我们可以使用该<ui:remove>标签。
我仍然对 的实际含义感到困惑<ui:remove>。我们需要多久使用一次 Facelets 标签?此外,Facelets 页面并不是每次点击页面时都会编译。
今天我正在阅读HashMap如何在java中工作.我遇到了一个博客,我直接引用了博客的文章.我在Stackoverflow上看过这篇文章.我还想知道细节.
所以答案是肯定在Java中调整HashMap时存在潜在的竞争条件,如果两个线程同时发现现在HashMap需要调整大小并且他们都尝试调整大小.在Java中的HashMap的调整过程中,存储在链表斗元素有迁移到新的水桶中得到逆转,从而因为Java的HashMap不附加在尾部的新元素,而不是它在头部添加新元素避免尾部穿越.如果发生竞争条件,那么最终会出现无限循环.
它指出,由于HashMap在调整HashMap的大小调整期间不是线程安全的,因此可能会出现一个重要的竞争条件.我甚至在我们的办公室项目中看到,人们广泛使用HashMaps知道它们不是线程安全的.如果它不是线程安全的,那我们为什么要使用HashMap呢?是开发人员缺乏知识,因为他们可能不了解ConcurrentHashMap等结构或其他原因.任何人都可以解释这个难题.
我正在读Threads的sleep()方法.我试着开发一个小例子.关于这个例子,我有两个困惑.
/**
* Created with IntelliJ IDEA.
* User: Ben
* Date: 8/7/13
* Time: 2:48 PM
* To change this template use File | Settings | File Templates.
*/
class SleepRunnable implements Runnable{
public void run() {
for(int i =0 ; i < 100 ; i++){
System.out.println("Running: " + Thread.currentThread().getName());
}
try {
Thread.sleep(500);
}
catch(InterruptedException e) {
System.out.println(Thread.currentThread().getName() +" I have been interrupted");
}
}
}
public class ThreadSleepTest {
public static void main(String[] args){
Runnable runnable = …Run Code Online (Sandbox Code Playgroud) 我正在阅读有关通用方法的内容 我已经研究过,如果你没有在类级别声明类型并使用泛型方法,那么语法就会像这样
public <T> void makeArrayList(T t)
Run Code Online (Sandbox Code Playgroud)
在这里我可以得出以下结论,如果我没有在返回类型之前声明占位符,它会给我编译时错误.我很困惑.我正在研究Java Generics的其他主题:通用类型仅定义为返回类型,但它似乎很混乱.我的问题是
有人可以详细阐述这一点吗?
我正在阅读Oracle 文档中的中断。我无法弄清楚以下部分。它指出
如果线程长时间不调用抛出 InterruptedException 的方法怎么办?然后它必须定期调用 Thread.interrupted,如果收到中断则返回 true。例如:
for (int i = 0; i < inputs.length; i++) {
heavyCrunch(inputs[i]);
if (Thread.interrupted()) {
// We've been interrupted: no more crunching.
return;
}
}
Run Code Online (Sandbox Code Playgroud)
我绞尽脑汁地想理解,如果一个线程长时间没有调用抛出 InterruptedException 的方法,这是什么意思?其次,Thread.interrupted()的用法是什么,它是一种线程可以向自身发送中断的方法?这个场景的实际用途是什么?谢谢。
我正在阅读Java Threads.我正在研究sleep()方法.这些书说明了这一点
当一个线程遇到一个
sleep调用时,它必须进入休眠状态指定的时间,除非它在唤醒时间之前被中断.
我正在阅读有关中断的内容,但是线程如何向自身发送中断?我想另一个线程可以发送中断吗?我理解正确吗?另外,两个线程,一个将发送中断的线程应该具有相同的目标Runnable?如果假设线程被中断,它是否会返回Runnable状态?我真的很抱歉,如果我听起来很愚蠢,那对我来说真是太新了.谢谢
这是一段代码片段.
class BoxVar{
static void call(Integer... i){
System.out.println("hi"+i);
}
static void call(int... i ){
System.out.println("hello"+i);
}
public static void main(String... args){
call(10);
}
}
Run Code Online (Sandbox Code Playgroud)
该程序编译良好.当我运行程序时,它给了我
java:对调用的引用是不明确的,com.exams.BoxVar中的方法调用(java.lang.Integer ...)和com.exams.BoxVar中的方法调用(int ...)匹配
有人可以解释一下原因吗?
最重要的是,我尝试将第一种方法转换为这样的方法.
static void call(Long... i){
System.out.println("hi"+i);
}
Run Code Online (Sandbox Code Playgroud)
它运行正常.有人可以帮我解决这个问题吗?谢谢.