我在使用javax HTTP客户端时遇到以下异常。知道为什么会这样吗?
java.lang.ClassCastException: Cannot cast org.glassfish.jersey.inject.hk2.Hk2InjectionManagerFactory to org.glassfish.jersey.internal.inject.InjectionManagerFactory
at java.lang.Class.cast(Class.java:3369)
at org.glassfish.jersey.internal.ServiceFinder$LazyObjectIterator.hasNext(ServiceFinder.java:714)
at org.glassfish.jersey.internal.inject.Injections.lookupService(Injections.java:112)
at org.glassfish.jersey.internal.inject.Injections.lookupInjectionManagerFactory(Injections.java:97)
at org.glassfish.jersey.internal.inject.Injections.createInjectionManager(Injections.java:68)
at org.glassfish.jersey.client.ClientConfig$State.initRuntime(ClientConfig.java:432)
at org.glassfish.jersey.internal.util.collection.Values$LazyValueImpl.get(Values.java:341)
at org.glassfish.jersey.client.ClientConfig.getRuntime(ClientConfig.java:826)
at org.glassfish.jersey.client.ClientRequest.getConfiguration(ClientRequest.java:285)
at org.glassfish.jersey.client.JerseyInvocation.validateHttpMethodAndEntity(JerseyInvocation.java:143)
at org.glassfish.jersey.client.JerseyInvocation.<init>(JerseyInvocation.java:112)
at org.glassfish.jersey.client.JerseyInvocation.<init>(JerseyInvocation.java:108)
at org.glassfish.jersey.client.JerseyInvocation.<init>(JerseyInvocation.java:99)
at org.glassfish.jersey.client.JerseyInvocation$AsyncInvoker.method(JerseyInvocation.java:706)
at org.glassfish.jersey.client.JerseyInvocation$AsyncInvoker.get(JerseyInvocation.java:566)
这可能是与类加载器相关的问题吗?因为使用http客户机的代码是作为插件加载的,带有一个单独的类加载器。
这当然是一个类加载器问题;我最近在泽西2.35上也遇到了同样的问题。据我所知,依赖注入体系结构方面的Jersey内部已经发生了变化(请参阅本文:Wypiperz答案)。
上述情况是由于“类加载器阴影”(如果有这样一个术语)造成的。争用发生在容器类加载器(在我的例子中是Tomcat JARClassLoader)和web应用类加载器(Tomcat的WebAppClassLoader)之间。
因为不同的类加载器加载的类被认为是不同的。因此,在您的情况下(和我的情况一样),“Hk2InjectionManagerFactory”类和“InjectionManagerFactory”类是由不同的类装入器装入的,因此赋值失败,出现类强制转换异常。
在我的例子中,问题是,我在web app和Tomcat common loader(容器类路径)上都有“jersey common”和“jersey client”。这就造成了问题。
解决方案是将所有与Jersey相关的类移到WEB-INF/lib,并将依赖Jersey客户端的库移到WEB-INF-lib。
此外,如果有任何其他与jersey相关的JAR的旧版本,也要检查您的类路径(容器类路径)。
我已经完成了在glassfish v4中添加SSL证书的步骤。我已经通过浏览器和java swing客户端验证了它的有效性(我在客户端使用apache的http客户端库) 什么不工作是管理控制台!由于成功导入SSL,我不能再连接到管理控制台,http://www.myhost.com:4848,我仍然得到登录屏幕,总是工作的管理员用户名/密码组合已停止工作。我也注意到当尝试部署一个网络应用程序从n
问题内容: 我正在下载Java EE,似乎有许多不同的下载选项。我不确定应该选择哪一个。Java EE似乎与GlassFish打包在一起。谁能告诉我这是什么,它对我有什么好处? 其次,如果我只是想玩转并了解Java EE,那么对我来说下载的是什么?列出选项的链接在下面… Java EE下载选项 问题答案: 首先,将近五年前它被称为Java EE。首字母缩略词J2EE仍指5.0之前的旧Java EE
我将mysql驱动程序放入glassfish/admin1/lib,我在尝试与GlassFish 3.1.2建立连接时收到此错误 为SimpleCRUD_ConnectionPool Ping连接池失败。类名错误或未为:com设置类路径。mysql。jdbc。jdbc2。可选择的MysqlDataSource请检查服务器。记录更多细节。 野兔配置: 池名称:SimpleCRUD_Connectio
这是我在尝试更改主密码时看到的。。。我尝试了几乎所有字符、数字、特殊字符的组合/home/larry$/home/glassfish/bin/asadmin更改主密码--savemasterpassword=true输入当前主密码
我使用的是我在中创建了一个webapp,并添加了api到我的项目中,代码没有显示错误,但是当我运行servlet时,会出现以下错误。
我试图在Netbeans中运行一个非常基本的servlet ContextListener程序。我已经很好地编码了它,但是在最后时刻,当我试图执行它的时候,程序的输出标签给了我如下所示的错误.. 这是我的ContextListener.java档案 这是网络.xml Netbeans没有显示任何语法错误。servlet文件是Netbeans IDE生成的默认文件。令人困惑的是…当我试图在没有侦听器