【问题标题】:java.lang.NoSuchMethodError: org.jboss.logging.Logger.getMessageLogger in Tomcat(Ubuntu 16.04)java.lang.NoSuchMethodError:Tomcat 中的 org.jboss.logging.Logger.getMessageLogger(Ubuntu 16.04)
【发布时间】:2018-04-04 13:45:09
【问题描述】:

当我尝试在 Tomcat 中部署 .war 文件时遇到此异常

java.lang.NoSuchMethodError: org.jboss.logging.Logger.getMessageLogger(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
        at org.hibernate.ejb.Ejb3Configuration.<clinit>(Ejb3Configuration.java:142)
        at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:55)
        at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:63)
        at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)

请注意:

-相同的 .war 文件已经在不同的服务器上运行(Linux OpenSuse)

-我将 Tomcat 文件夹(所有服务器的)从旧服务器(OpenSuse)复制到新服务器(Ubuntu 16.04)。这样文件是一样的。

-两台服务器的 JVM 相同。

-在开发期间(在 Eclipse 中)不会发生异常。

我的问题是:

-有些人建议我更改我的 maven pom 文件。是否有意义?因为正如我所说,.war 已经在 OpenSuse 服务器上运行了。

-我应该能够在不进行任何更改的情况下部署 same.war。我不应该吗?

【问题讨论】:

  • 您是否确认您的战争中确实存在缺失的部分?一个可能的原因是它被配置为在运行时可用,而您的 Tomcat 安装没有提供它。
  • 它出现了!正如我上面所说,我已将所有 Tomcat 目录从 OpenSuse 服务器复制到新的 Ubuntu 服务器。两个 Tomcat 目录在不同的 Linux 服务器上是相同的。
  • 你确定新的tomcat服务器上没有其他库吗?似乎该类位于具有不同(或多个)版本的类路径上。
  • 是的,我确定是因为我将tomcat目录从旧Linux服务器复制并粘贴到了新服务器。如果我在新的 Linux 服务器上有其他库,它也不会在旧的服务器上运行。
  • 看起来您在 Hibernate 中使用了错误版本的 JBoss Logging。你的类路径上有哪些版本的 Hibernate 和 JBoss Logging?

标签: java tomcat jboss-logging


【解决方案1】:

您收到错误的服务器中至少缺少一个库。

检查您在服务器中使用的 $PATH 变量中的所有库。

希望对您有所帮助!

问候, 埃比

【讨论】:

  • 这是我在工作的盒子上的东西:ip-10-2-1-9:~ # echo $PATH /sbin:/usr/sbin:/usr/local/sbin: /root/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/games:/usr/lib/jvm/jre/bin 这是我在新的框 root@ip-10-2-1-20:~$ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr /games:/usr/local/games 你在说这个吗?我们在同一页上吗?
猜你喜欢
  • 2018-11-09
  • 2018-07-30
  • 1970-01-01
  • 2016-11-26
  • 1970-01-01
  • 1970-01-01
  • 2017-01-13
  • 1970-01-01
  • 2017-05-31
相关资源
最近更新 更多