玻璃鱼4部署错误

10

我向我的JavaEE项目添加了一些库,然后部署应用程序就可以工作了。我进行了一些修改,但在Eclipse中得到了这个错误消息:

Cannot Deploy ProjectName
deploy is failing=Error occurred during deployment: Keys cannot be duplicate. 
Old value of                 this key property, nullwill be retained. 
Please see server.log for more details.
java.lang.LinkageError: loader (instance of  
org/glassfish/web/loader/WebappClassLoader):
attempted  duplicate class definition for name: 
"org/glassfish/web/loader/JdbcLeakPrevention"
loader (instance of  org/glassfish/web/loader/WebappClassLoader): attempted  duplicate 
class definition for name: "org/glassfish/web/loader/JdbcLeakPrevention"

我做了一些研究,发现这不是一个Eclipse的bug。我正在使用Kepler,但我也尝试了Juno,收到了相同的错误信息。 我下载了Glassfish 3.1.2.2,消息就消失了。

为什么我会收到这个消息?


你最近从JDK7切换到JDK8了吗?这个错误似乎在这种情况下出现,例如:https://groups.google.com/forum/#!msg/adopt-openjdk/DzRXD2fx1d0/Lt0aEVaUteQJ - VonC
@VonC 不,我正在使用JDK 7更新13。 - Arnold Galovics
有没有机会升级到最新的JDK7(u45)来验证该问题是否仍然存在? - VonC
@VonC 我明天会尝试并发布结果。 - Arnold Galovics
@VonC 使用更新的Java仍然收到相同的错误信息。 - Arnold Galovics
在没有对任何应用程序或软件进行更改的情况下,我刚刚重新启动后发现我的一款应用程序突然出现了这种情况。只能删除所有东西并重新安装。 =/ - BadZen
7个回答

9

我遇到了同样的错误。我停止了Glassfish服务器,然后清理了项目(Project -> Clean...)。重新启动服务器就可以了。


3

我也遇到了这个问题,我的项目中使用了SVNKit库及其依赖,所以看起来存在某种冲突。我可以通过清除osgi-cache文件夹并重新启动glassfish来解决这个问题,但是每次部署时都需要这样做,所以不是一个很好的解决方案。


1
https://agritsik.wordpress.com/2015/08/26/how-to-clear-glassfish-cache-helps-to-resolve-deployment-exception-inconsistent-module-state/ - shareef
该链接文章为空(请参见文章下的评论)。欢迎提供新的解决方案。 - DaRich

2

在我的 Glassfish日志 文件中写着:

应用程序名称为ws已经注册。要么指定强制重新部署,要么重新部署该应用程序。或者如果这是一个新的部署,请选择不同的名称。

按照日志的说明,我使用--force选项部署了该应用程序:

asadmin deploy --force=true ws.war

而且它起作用了。关于deploy --force=true更多信息。


2

尝试删除osgi-cache和generated目录下的所有文件。这对我很有效。


0

以下步骤对我有效:

  1. 停止glassfish服务器(如果正在运行)
  2. 杀死所有Java进程(使用终端或活动监视器)
  3. 现在尝试重新部署。

0
尝试清理自动部署目录,重新启动服务器。同时清理项目部署目录。

-1

某种程度上与单个@Singleton bean有关。将其转换为@Stateless,一切正常。不太确定为什么会发生这种情况...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接