2021.11.29,内容:字节码。

本文介绍了字节码在Java中的重要性,它作为JVM的中间表示,允许跨语言交互。通过分析字节码,开发者可以洞察Volatile等关键字的底层实现。字节码也在Spring AOP、ORM框架和热部署中发挥关键作用。理解字节码能帮助开发者更好地学习和掌握基于JVM的语言,如Scala和Kotlin。

之所以被称之为字节码,是因为字节码文件由十六进制值组成,而 JVM 以两个十六进制值为一组,即以字节为单位进行读取。在 Java 中一般是用 javac 命令编译源代码为字节码文件,一个.java 文件从编译到运行的示例如下图所示。

图1 Java运行示意图

对于开发人员,了解字节码可以更准确、直观地理解 Java 语言中更深层次的东西,比如通过字节码,可以很直观地看到 Volatile 关键字如何在字节码上生效。另外,字节码增强技术在 Spring AOP、各种 ORM 框架、热部署中的应用屡见不鲜,深入理解其原理对于我们来说大有裨益。除此之外,由于 JVM 规范的存在,只要最终可以生成符合规范的字节码就可以在 JVM 上运行,因此这就给了各种运行在 JVM 上的语言(如 Scala、Groovy、Kotlin)一种契机,可以扩展 Java 所没有的特性或者实现各种语法糖。理解字节码后再学习这些语言,可以“逆流而上”,从字节码视角看它的设计思路,学习起来也“易如反掌”。

[root@yfw ~]# cd /opt/openfire/bin [root@yfw bin]# sudo chmod +x /opt/openfire/bin/start.sh [root@yfw bin]# sudo chown -R openfire:openfire /opt/openfire [root@yfw bin]# sudo su - openfire Last login: Sat Nov 15 17:44:19 CST 2025 on pts/0 ✅ JAVA_HOME: /usr/lib/jvm/java-11-openjdk ✅ Maven home: /opt/maven ✅ Java version: openjdk version "11.0.13" 2021-10-19 LTS ✅ Environment loaded for openfire PATH = /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/lib/jvm/java-11-openjdk/bin:/opt/maven/bin:/usr/local/ffmpeg/bin:/opt/spark/bin JAVA_HOME = /usr/lib/jvm/java-11-openjdk [openfire@yfw ~]$ cd /opt/openfire [openfire@yfw openfire]$ ./bin/start.sh --no-daemon Starting OpenFire in foreground mode... 17:53:48.527 [main] ERROR org.jivesoftware.util.XMLProperties - Error reading XML properties org.dom4j.DocumentException: Error on line 1 of document : Premature end of file. at org.dom4j.io.SAXReader.read(SAXReader.java:511) ~[dom4j-2.1.4.jar:?] at org.dom4j.io.SAXReader.read(SAXReader.java:408) ~[dom4j-2.1.4.jar:?] at org.jivesoftware.util.XMLProperties.buildDoc(XMLProperties.java:810) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.util.XMLProperties.<init>(XMLProperties.java:160) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.util.JiveGlobals.loadSecurityProperties(JiveGlobals.java:1312) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.util.JiveGlobals.isXMLPropertyEncrypted(JiveGlobals.java:1010) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.util.XMLProperties.getProperty(XMLProperties.java:212) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.util.XMLProperties.getProperty(XMLProperties.java:171) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.util.JiveGlobals.getXMLProperty(JiveGlobals.java:310) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.openfire.XMPPServer.initialize(XMPPServer.java:367) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.openfire.XMPPServer.start(XMPPServer.java:658) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.openfire.XMPPServer.<init>(XMPPServer.java:221) [xmppserver-5.0.2.jar:5.0.2] at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?] at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) [?:?] at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) [?:?] at java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) [?:?] at java.lang.reflect.ReflectAccess.newInstance(ReflectAccess.java:128) [?:?] at jdk.internal.reflect.ReflectionFactory.newInstance(ReflectionFactory.java:347) [?:?] at java.lang.Class.newInstance(Class.java:645) [?:?] at org.jivesoftware.openfire.starter.ServerStarter.start(ServerStarter.java:92) [startup.jar:5.0.2] at org.jivesoftware.openfire.starter.ServerStarter.main(ServerStarter.java:56) [startup.jar:5.0.2] Caused by: org.xml.sax.SAXParseException: Premature end of file. at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:204) ~[?:?] at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:178) ~[?:?] at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:400) ~[?:?] at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:327) ~[?:?] at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1471) ~[?:?] at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:1013) ~[?:?] at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:605) ~[?:?] at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:112) ~[?:?] at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:542) ~[?:?] at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:889) ~[?:?] at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:825) ~[?:?] at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141) ~[?:?] at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1224) ~[?:?] at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:637) ~[?:?] at org.dom4j.io.SAXReader.read(SAXReader.java:494) ~[dom4j-2.1.4.jar:?] ... 20 more 17:53:48.554 [main] ERROR org.jivesoftware.util.JiveGlobals - Unable to load default security properties from: /opt/openfire/conf/openfire.xml java.io.IOException: Error on line 1 of document : Premature end of file. at org.jivesoftware.util.XMLProperties.buildDoc(XMLProperties.java:814) ~[xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.util.XMLProperties.<init>(XMLProperties.java:160) ~[xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.util.JiveGlobals.loadSecurityProperties(JiveGlobals.java:1312) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.util.JiveGlobals.isXMLPropertyEncrypted(JiveGlobals.java:1010) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.util.XMLProperties.getProperty(XMLProperties.java:212) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.util.XMLProperties.getProperty(XMLProperties.java:171) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.util.JiveGlobals.getXMLProperty(JiveGlobals.java:310) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.openfire.XMPPServer.initialize(XMPPServer.java:367) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.openfire.XMPPServer.start(XMPPServer.java:658) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.openfire.XMPPServer.<init>(XMPPServer.java:221) [xmppserver-5.0.2.jar:5.0.2] at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?] at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) [?:?] at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) [?:?] at java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) [?:?] at java.lang.reflect.ReflectAccess.newInstance(ReflectAccess.java:128) [?:?] at jdk.internal.reflect.ReflectionFactory.newInstance(ReflectionFactory.java:347) [?:?] at java.lang.Class.newInstance(Class.java:645) [?:?] at org.jivesoftware.openfire.starter.ServerStarter.start(ServerStarter.java:92) [startup.jar:5.0.2] at org.jivesoftware.openfire.starter.ServerStarter.main(ServerStarter.java:56) [startup.jar:5.0.2] 17:53:48.569 [main] ERROR org.jivesoftware.util.JiveProperties - null java.lang.NullPointerException: null at java.lang.Class.forName0(Native Method) ~[?:?] at java.lang.Class.forName(Class.java:375) ~[?:?] at org.jivesoftware.database.DefaultConnectionProvider.start(DefaultConnectionProvider.java:99) ~[xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.database.DbConnectionManager.setConnectionProvider(DbConnectionManager.java:652) ~[xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.database.DbConnectionManager.ensureConnectionProvider(DbConnectionManager.java:109) ~[xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.database.DbConnectionManager.getConnection(DbConnectionManager.java:162) ~[xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.util.JiveProperties.loadProperties(JiveProperties.java:472) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.util.JiveProperties.init(JiveProperties.java:108) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.util.JiveProperties.getInstance(JiveProperties.java:84) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.util.JiveGlobals.getProperty(JiveGlobals.java:547) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.util.cache.CacheFactory.<clinit>(CacheFactory.java:102) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.openfire.XMPPServer.initialize(XMPPServer.java:381) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.openfire.XMPPServer.start(XMPPServer.java:658) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.openfire.XMPPServer.<init>(XMPPServer.java:221) [xmppserver-5.0.2.jar:5.0.2] at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?] at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) [?:?] at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) [?:?] at java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) [?:?] at java.lang.reflect.ReflectAccess.newInstance(ReflectAccess.java:128) [?:?] at jdk.internal.reflect.ReflectionFactory.newInstance(ReflectionFactory.java:347) [?:?] at java.lang.Class.newInstance(Class.java:645) [?:?] at org.jivesoftware.openfire.starter.ServerStarter.start(ServerStarter.java:92) [startup.jar:5.0.2] at org.jivesoftware.openfire.starter.ServerStarter.main(ServerStarter.java:56) [startup.jar:5.0.2] Database setup or configuration error: Please verify your database settings and check the logs/openfire.log file for detailed error messages. 17:53:51.152 [main] ERROR org.jivesoftware.openfire.XMPPServer - Database could not be accessed java.sql.SQLException: ConnectionManager.getConnection() failed to obtain a connection after 11 attempts. The exception from the last attempt is as follows: java.sql.SQLException: Check JDBC properties; data source was not be initialised at org.jivesoftware.database.DbConnectionManager.getConnection(DbConnectionManager.java:204) ~[xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.openfire.XMPPServer.verifyDataSource(XMPPServer.java:1010) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.openfire.XMPPServer.start(XMPPServer.java:666) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.openfire.XMPPServer.<init>(XMPPServer.java:221) [xmppserver-5.0.2.jar:5.0.2] at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?] at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) [?:?] at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) [?:?] at java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) [?:?] at java.lang.reflect.ReflectAccess.newInstance(ReflectAccess.java:128) [?:?] at jdk.internal.reflect.ReflectionFactory.newInstance(ReflectionFactory.java:347) [?:?] at java.lang.Class.newInstance(Class.java:645) [?:?] at org.jivesoftware.openfire.starter.ServerStarter.start(ServerStarter.java:92) [startup.jar:5.0.2] at org.jivesoftware.openfire.starter.ServerStarter.main(ServerStarter.java:56) [startup.jar:5.0.2] java.lang.IllegalArgumentException: java.sql.SQLException: ConnectionManager.getConnection() failed to obtain a connection after 11 attempts. The exception from the last attempt is as follows: java.sql.SQLException: Check JDBC properties; data source was not be initialised at org.jivesoftware.openfire.XMPPServer.verifyDataSource(XMPPServer.java:1020) at org.jivesoftware.openfire.XMPPServer.start(XMPPServer.java:666) at org.jivesoftware.openfire.XMPPServer.<init>(XMPPServer.java:221) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) at java.base/java.lang.reflect.ReflectAccess.newInstance(ReflectAccess.java:128) at java.base/jdk.internal.reflect.ReflectionFactory.newInstance(ReflectionFactory.java:347) at java.base/java.lang.Class.newInstance(Class.java:645) at org.jivesoftware.openfire.starter.ServerStarter.start(ServerStarter.java:92) at org.jivesoftware.openfire.starter.ServerStarter.main(ServerStarter.java:56) Caused by: java.sql.SQLException: ConnectionManager.getConnection() failed to obtain a connection after 11 attempts. The exception from the last attempt is as follows: java.sql.SQLException: Check JDBC properties; data source was not be initialised at org.jivesoftware.database.DbConnectionManager.getConnection(DbConnectionManager.java:204) at org.jivesoftware.openfire.XMPPServer.verifyDataSource(XMPPServer.java:1010) ... 11 more 17:53:51.153 [main] ERROR org.jivesoftware.openfire.XMPPServer - java.sql.SQLException: ConnectionManager.getConnection() failed to obtain a connection after 11 attempts. The exception from the last attempt is as follows: java.sql.SQLException: Check JDBC properties; data source was not be initialised java.lang.IllegalArgumentException: java.sql.SQLException: ConnectionManager.getConnection() failed to obtain a connection after 11 attempts. The exception from the last attempt is as follows: java.sql.SQLException: Check JDBC properties; data source was not be initialised at org.jivesoftware.openfire.XMPPServer.verifyDataSource(XMPPServer.java:1020) ~[xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.openfire.XMPPServer.start(XMPPServer.java:666) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.openfire.XMPPServer.<init>(XMPPServer.java:221) [xmppserver-5.0.2.jar:5.0.2] at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?] at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) [?:?] at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) [?:?] at java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) [?:?] at java.lang.reflect.ReflectAccess.newInstance(ReflectAccess.java:128) [?:?] at jdk.internal.reflect.ReflectionFactory.newInstance(ReflectionFactory.java:347) [?:?] at java.lang.Class.newInstance(Class.java:645) [?:?] at org.jivesoftware.openfire.starter.ServerStarter.start(ServerStarter.java:92) [startup.jar:5.0.2] at org.jivesoftware.openfire.starter.ServerStarter.main(ServerStarter.java:56) [startup.jar:5.0.2] Caused by: java.sql.SQLException: ConnectionManager.getConnection() failed to obtain a connection after 11 attempts. The exception from the last attempt is as follows: java.sql.SQLException: Check JDBC properties; data source was not be initialised at org.jivesoftware.database.DbConnectionManager.getConnection(DbConnectionManager.java:204) ~[xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.openfire.XMPPServer.verifyDataSource(XMPPServer.java:1010) ~[xmppserver-5.0.2.jar:5.0.2] ... 11 more Error starting the server. Please check the log files for more information.[root@yfw ~]# cd /opt/openfire/bin [root@yfw bin]# sudo chmod +x /opt/openfire/bin/start.sh [root@yfw bin]# sudo chown -R openfire:openfire /opt/openfire [root@yfw bin]# sudo su - openfire Last login: Sat Nov 15 17:44:19 CST 2025 on pts/0 ✅ JAVA_HOME: /usr/lib/jvm/java-11-openjdk ✅ Maven home: /opt/maven ✅ Java version: openjdk version "11.0.13" 2021-10-19 LTS ✅ Environment loaded for openfire PATH = /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/lib/jvm/java-11-openjdk/bin:/opt/maven/bin:/usr/local/ffmpeg/bin:/opt/spark/bin JAVA_HOME = /usr/lib/jvm/java-11-openjdk [openfire@yfw ~]$ cd /opt/openfire [openfire@yfw openfire]$ ./bin/start.sh --no-daemon Starting OpenFire in foreground mode... 17:53:48.527 [main] ERROR org.jivesoftware.util.XMLProperties - Error reading XML properties org.dom4j.DocumentException: Error on line 1 of document : Premature end of file. at org.dom4j.io.SAXReader.read(SAXReader.java:511) ~[dom4j-2.1.4.jar:?] at org.dom4j.io.SAXReader.read(SAXReader.java:408) ~[dom4j-2.1.4.jar:?] at org.jivesoftware.util.XMLProperties.buildDoc(XMLProperties.java:810) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.util.XMLProperties.<init>(XMLProperties.java:160) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.util.JiveGlobals.loadSecurityProperties(JiveGlobals.java:1312) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.util.JiveGlobals.isXMLPropertyEncrypted(JiveGlobals.java:1010) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.util.XMLProperties.getProperty(XMLProperties.java:212) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.util.XMLProperties.getProperty(XMLProperties.java:171) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.util.JiveGlobals.getXMLProperty(JiveGlobals.java:310) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.openfire.XMPPServer.initialize(XMPPServer.java:367) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.openfire.XMPPServer.start(XMPPServer.java:658) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.openfire.XMPPServer.<init>(XMPPServer.java:221) [xmppserver-5.0.2.jar:5.0.2] at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?] at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) [?:?] at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) [?:?] at java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) [?:?] at java.lang.reflect.ReflectAccess.newInstance(ReflectAccess.java:128) [?:?] at jdk.internal.reflect.ReflectionFactory.newInstance(ReflectionFactory.java:347) [?:?] at java.lang.Class.newInstance(Class.java:645) [?:?] at org.jivesoftware.openfire.starter.ServerStarter.start(ServerStarter.java:92) [startup.jar:5.0.2] at org.jivesoftware.openfire.starter.ServerStarter.main(ServerStarter.java:56) [startup.jar:5.0.2] Caused by: org.xml.sax.SAXParseException: Premature end of file. at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:204) ~[?:?] at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:178) ~[?:?] at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:400) ~[?:?] at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:327) ~[?:?] at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1471) ~[?:?] at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:1013) ~[?:?] at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:605) ~[?:?] at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:112) ~[?:?] at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:542) ~[?:?] at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:889) ~[?:?] at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:825) ~[?:?] at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141) ~[?:?] at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1224) ~[?:?] at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:637) ~[?:?] at org.dom4j.io.SAXReader.read(SAXReader.java:494) ~[dom4j-2.1.4.jar:?] ... 20 more 17:53:48.554 [main] ERROR org.jivesoftware.util.JiveGlobals - Unable to load default security properties from: /opt/openfire/conf/openfire.xml java.io.IOException: Error on line 1 of document : Premature end of file. at org.jivesoftware.util.XMLProperties.buildDoc(XMLProperties.java:814) ~[xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.util.XMLProperties.<init>(XMLProperties.java:160) ~[xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.util.JiveGlobals.loadSecurityProperties(JiveGlobals.java:1312) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.util.JiveGlobals.isXMLPropertyEncrypted(JiveGlobals.java:1010) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.util.XMLProperties.getProperty(XMLProperties.java:212) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.util.XMLProperties.getProperty(XMLProperties.java:171) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.util.JiveGlobals.getXMLProperty(JiveGlobals.java:310) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.openfire.XMPPServer.initialize(XMPPServer.java:367) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.openfire.XMPPServer.start(XMPPServer.java:658) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.openfire.XMPPServer.<init>(XMPPServer.java:221) [xmppserver-5.0.2.jar:5.0.2] at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?] at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) [?:?] at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) [?:?] at java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) [?:?] at java.lang.reflect.ReflectAccess.newInstance(ReflectAccess.java:128) [?:?] at jdk.internal.reflect.ReflectionFactory.newInstance(ReflectionFactory.java:347) [?:?] at java.lang.Class.newInstance(Class.java:645) [?:?] at org.jivesoftware.openfire.starter.ServerStarter.start(ServerStarter.java:92) [startup.jar:5.0.2] at org.jivesoftware.openfire.starter.ServerStarter.main(ServerStarter.java:56) [startup.jar:5.0.2] 17:53:48.569 [main] ERROR org.jivesoftware.util.JiveProperties - null java.lang.NullPointerException: null at java.lang.Class.forName0(Native Method) ~[?:?] at java.lang.Class.forName(Class.java:375) ~[?:?] at org.jivesoftware.database.DefaultConnectionProvider.start(DefaultConnectionProvider.java:99) ~[xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.database.DbConnectionManager.setConnectionProvider(DbConnectionManager.java:652) ~[xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.database.DbConnectionManager.ensureConnectionProvider(DbConnectionManager.java:109) ~[xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.database.DbConnectionManager.getConnection(DbConnectionManager.java:162) ~[xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.util.JiveProperties.loadProperties(JiveProperties.java:472) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.util.JiveProperties.init(JiveProperties.java:108) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.util.JiveProperties.getInstance(JiveProperties.java:84) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.util.JiveGlobals.getProperty(JiveGlobals.java:547) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.util.cache.CacheFactory.<clinit>(CacheFactory.java:102) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.openfire.XMPPServer.initialize(XMPPServer.java:381) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.openfire.XMPPServer.start(XMPPServer.java:658) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.openfire.XMPPServer.<init>(XMPPServer.java:221) [xmppserver-5.0.2.jar:5.0.2] at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?] at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) [?:?] at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) [?:?] at java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) [?:?] at java.lang.reflect.ReflectAccess.newInstance(ReflectAccess.java:128) [?:?] at jdk.internal.reflect.ReflectionFactory.newInstance(ReflectionFactory.java:347) [?:?] at java.lang.Class.newInstance(Class.java:645) [?:?] at org.jivesoftware.openfire.starter.ServerStarter.start(ServerStarter.java:92) [startup.jar:5.0.2] at org.jivesoftware.openfire.starter.ServerStarter.main(ServerStarter.java:56) [startup.jar:5.0.2] Database setup or configuration error: Please verify your database settings and check the logs/openfire.log file for detailed error messages. 17:53:51.152 [main] ERROR org.jivesoftware.openfire.XMPPServer - Database could not be accessed java.sql.SQLException: ConnectionManager.getConnection() failed to obtain a connection after 11 attempts. The exception from the last attempt is as follows: java.sql.SQLException: Check JDBC properties; data source was not be initialised at org.jivesoftware.database.DbConnectionManager.getConnection(DbConnectionManager.java:204) ~[xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.openfire.XMPPServer.verifyDataSource(XMPPServer.java:1010) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.openfire.XMPPServer.start(XMPPServer.java:666) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.openfire.XMPPServer.<init>(XMPPServer.java:221) [xmppserver-5.0.2.jar:5.0.2] at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?] at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) [?:?] at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) [?:?] at java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) [?:?] at java.lang.reflect.ReflectAccess.newInstance(ReflectAccess.java:128) [?:?] at jdk.internal.reflect.ReflectionFactory.newInstance(ReflectionFactory.java:347) [?:?] at java.lang.Class.newInstance(Class.java:645) [?:?] at org.jivesoftware.openfire.starter.ServerStarter.start(ServerStarter.java:92) [startup.jar:5.0.2] at org.jivesoftware.openfire.starter.ServerStarter.main(ServerStarter.java:56) [startup.jar:5.0.2] java.lang.IllegalArgumentException: java.sql.SQLException: ConnectionManager.getConnection() failed to obtain a connection after 11 attempts. The exception from the last attempt is as follows: java.sql.SQLException: Check JDBC properties; data source was not be initialised at org.jivesoftware.openfire.XMPPServer.verifyDataSource(XMPPServer.java:1020) at org.jivesoftware.openfire.XMPPServer.start(XMPPServer.java:666) at org.jivesoftware.openfire.XMPPServer.<init>(XMPPServer.java:221) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) at java.base/java.lang.reflect.ReflectAccess.newInstance(ReflectAccess.java:128) at java.base/jdk.internal.reflect.ReflectionFactory.newInstance(ReflectionFactory.java:347) at java.base/java.lang.Class.newInstance(Class.java:645) at org.jivesoftware.openfire.starter.ServerStarter.start(ServerStarter.java:92) at org.jivesoftware.openfire.starter.ServerStarter.main(ServerStarter.java:56) Caused by: java.sql.SQLException: ConnectionManager.getConnection() failed to obtain a connection after 11 attempts. The exception from the last attempt is as follows: java.sql.SQLException: Check JDBC properties; data source was not be initialised at org.jivesoftware.database.DbConnectionManager.getConnection(DbConnectionManager.java:204) at org.jivesoftware.openfire.XMPPServer.verifyDataSource(XMPPServer.java:1010) ... 11 more 17:53:51.153 [main] ERROR org.jivesoftware.openfire.XMPPServer - java.sql.SQLException: ConnectionManager.getConnection() failed to obtain a connection after 11 attempts. The exception from the last attempt is as follows: java.sql.SQLException: Check JDBC properties; data source was not be initialised java.lang.IllegalArgumentException: java.sql.SQLException: ConnectionManager.getConnection() failed to obtain a connection after 11 attempts. The exception from the last attempt is as follows: java.sql.SQLException: Check JDBC properties; data source was not be initialised at org.jivesoftware.openfire.XMPPServer.verifyDataSource(XMPPServer.java:1020) ~[xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.openfire.XMPPServer.start(XMPPServer.java:666) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.openfire.XMPPServer.<init>(XMPPServer.java:221) [xmppserver-5.0.2.jar:5.0.2] at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?] at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) [?:?] at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) [?:?] at java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) [?:?] at java.lang.reflect.ReflectAccess.newInstance(ReflectAccess.java:128) [?:?] at jdk.internal.reflect.ReflectionFactory.newInstance(ReflectionFactory.java:347) [?:?] at java.lang.Class.newInstance(Class.java:645) [?:?] at org.jivesoftware.openfire.starter.ServerStarter.start(ServerStarter.java:92) [startup.jar:5.0.2] at org.jivesoftware.openfire.starter.ServerStarter.main(ServerStarter.java:56) [startup.jar:5.0.2] Caused by: java.sql.SQLException: ConnectionManager.getConnection() failed to obtain a connection after 11 attempts. The exception from the last attempt is as follows: java.sql.SQLException: Check JDBC properties; data source was not be initialised at org.jivesoftware.database.DbConnectionManager.getConnection(DbConnectionManager.java:204) ~[xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.openfire.XMPPServer.verifyDataSource(XMPPServer.java:1010) ~[xmppserver-5.0.2.jar:5.0.2] ... 11 more Error starting the server. Please check the log files for more information. ^CHalting server... Server halted [openfire@yfw openfire]$ [root@yfw ~]# cd /opt/openfire/bin -bash: [root@yfw: command not found [openfire@yfw openfire]$ [root@yfw bin]# sudo chmod +x /opt/openfire/bin/start.sh XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFr-bash: [root@yfw: command not found [openfire@yfw openfire]$ [root@yfw bin]# sudo chown -R openfire:openfire /opt/openfire -bash: [root@yfw: command not found mpl.java:542) ~[?:?] at com.sun.org.apac[openfire@yfw openfire]$ [root@yfw bin]# sudo su - openfire parsers.XML11Con-bash: [root@yfw: command not found [openfire@yfw openfire]$ Last login: Sat Nov 15 17:44:19 CST 2025 on pts/0 figuration.parse(XML11Configuration.java:889) ~[?:-bash: Last: command not found [openfire@yfw openfire]$ ✅ JAVA_HOME: /usr/lib/jvm/java-11-openjdk -bash:: command not found [openfire@yfw openfire]$ ✅ Maven home: /opt/maven rnal.parsers.XML11Configura-bash:: command not found [openfire@yfw openfire]$ ✅ Java version: openjdk version "11.0.13" 2021-10-19 LTS (XML11Configuration.java:825) ~[?:?] at c-bash:: command not found [openfire@yfw openfire]$ ✅ Environment loaded for openfire -bash:: command not found che.xerces.internal.pa[openfire@yfw openfire]$ PATH = /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usrdk/bin:/opt/maven/bin:/usr/local/ffmpeg/bin:/opt/spark/bin e.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXPa-bash: PATH: command not found [openfire@yfw openfire]$ JAVA_HOME = /usr/lib/jvm/java-11-openjdk rser.java:1224) ~[?:?] at com.sun.or-bash: JAVA_HOME: command not found [openfire@yfw openfire]$ [openfire@yfw ~]$ cd /opt/openfire -bash: [openfire@yfw: command not found [openfire@yfw openfire]$ [openfire@yfw openfire]$ ./bin/start.sh --no-daemon rserImpl$JAXPSAXParser.parse(SAXParserImpl.java:637)-bash: [openfire@yfw: command not found [openfire@yfw openfire]$ Starting OpenFire in foreground mode... SAXReade-bash: Starting: command not found [openfire@yfw openfire]$ 17:53:48.527 [main] ERROR org.jivesoftware.util.XMLProperties - Error reading XML properties 94) ~[dom4j-2.1.4.jar:?] ... 20 more 17:53:48.554 [main] ERROR-bash: 17:53:48.527: command not found [openfire@yfw openfire]$ org.dom4j.DocumentException: Error on line 1 of document : Premature end of file. org.jivesoftware.util.JiveGlobals - Unable to load default security properties fro-bash: org.dom4j.DocumentException:: command not found [openfire@yfw openfire]$ at org.dom4j.io.SAXReader.read(SAXReader.java:511) ~[dom4j-2.1.4.jar:?] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at org.dom4j.io.SAXReader.read(SAXReader.java:408) ~[dom4j-2.1.4.jar:?] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at org.jivesoftware.util.XMLProperties.buildDoc(XMLProperties.java:810) [xmppserver-5.0.2.jar:5.0.2] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at org.jivesoftware.util.XMLProperties.<init>(XMLProperties.java:160) [xmppserver-5.0.2.jar:5.0.2] veGlobals.loa-bash: init/dev/fd/62: No such file or directory -bash: XMLProperties.java:160: command not found [openfire@yfw openfire]$ at org.jivesoftware.util.JiveGlobals.loadSecurityProperties(JiveGlobals.java:1312) [xmppserver-5.0.2.jar:5.0.2] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at org.jivesoftware.util.JiveGlobals.isXMLPropertyEncrypted(JiveGlobals.java:1010) [xmppserver-5.0.2.jar:5.0.2] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at org.jivesoftware.util.XMLProperties.getProperty(XMLProperties.java:212) [xmppserver-5.0.2.jar:5.0.2] -bash: syntax error near unexpected token `(' etProperty(XMLProperties.java:212) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.util.XMLProperties.g[openfire@yfw openfire]$ at org.jivesoftware.util.) [xmppserver-5.0.2.jar:5.0.2]roperties.java:171) -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at org.jivesoftware.util.JiveGlobals.getXMLProperty(JiveGlobals.java:310) [xmppserver-5.0.2.jar:5.0.2] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at org.jivesoftware.openfire.XMPPServer.initialize(XMPPServer.java:367) [xmppserver-5.0.2.jar:5.0.2] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at org.jivesoftware.openfire.XMPPServer.start(XMPPServer.java:658) [xmppserver-5.0.2.jar:5.0.2] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at org.jivesoftware.openfire.XMPPServer.<init>(XMPPServer.java:221) [xmppserver-5.0.2.jar:5.0.2] al.reflect.NativeConstructo-bash: XMLProperties.java:160: command not found -bash: init/dev/fd/62: No such file or directory -bash: XMPPServer.java:221: command not found [openfire@yfw openfire]$ at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?] -bash: syntax error near unexpected token `(' onstructo[openfire@yfw openfire]$ at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstanconstructorAccessorImpl.java:77) [?:?] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) [?:?] -bash: syntax error near unexpected token `(' tructorAccessorImpl.java:45) [?:?] at java.lang.reflect.Constructor.newInst[openfire@yfw openfire]$ at java.lang.reflect.Cons99) [?:?]ewInstanceWithCaller(Constructor.java:49 -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at java.lang.reflect.ReflectAccess.newInstance(ReflectAccess.java:128) [?:?] -bash: syntax error near unexpected token `(' ava:499) [?:?] at java.lang.reflect.ReflectAccess.newInstance(ReflectAccess.java:128) [?:?] at jdk.internal.reflect.ReflectionFactor[openfire@yfw openfire]$ at jdk.internal.reflect.Rava:347) [?:?]ry.newInstance(ReflectionFactory.ja -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at java.lang.Class.newInstance(Class.java:645) [?:?] -bash: syntax error near unexpected token `(' ry.java:347) [?:?] at java.lang.Class.newInstance(Class.java:645) [?:?] at org.jivesoftware.openfire.starter.Ser[openfire@yfw openfire]$ at org.jivesoftware.openfva:92) [startup.jar:5.0.2]start(ServerStarter.jav -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at org.jivesoftware.openfire.starter.ServerStarter.main(ServerStarter.java:56) [startup.jar:5.0.2] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ Caused by: org.xml.sax.SAXParseException: Premature end of file. JiveProperties - null java.lang.NullPointerException: null -bash: XMPPServer.java:221: command not found -bash: Caused: command not found [openfire@yfw openfire]$ at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:204) ~[?:?] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:178) ~[?:?] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:400) ~[?:?] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:327) ~[?:?] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1471) ~[?:?] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:1013) ~[?:?] -bash: syntax error near unexpected token `(' :162) ~[xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.util.JiveProperties.loadProperties(J[openfire@yfw openfire]$ at com.suLDocumentScannerImpl.java:605) ~[?:?]DocumentScannerImpl.next(XML -bash: syntax error near unexpected token `(' iveProperties.java:472) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.util.JiveProperties.init(JivePropertie[openfire@yfw openfire]$ at com.XMLNSDocumentScannerImpl.java:112) ~[?:?]DocumentScannerImpl.next(X -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:542) ~[?:?] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:889) ~[?:?] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:825) ~[?:?] -bash: syntax error near unexpected token `(' itialize(XMPPServer.java:381) [xmppserver-5.0.2.jar:5.0.2] at o[openfire@yfw openfire]$ at com.sun.org.apache.xerces.internal.parsers.XMLParser.parseava:141) ~[?:?] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1224) ~[?:?] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:637) ~[?:?] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at org.dom4j.io.SAXReader.read(SAXReader.java:494) ~[dom4j-2.1.4.jar:?] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ ... 20 more va:77) [?:?] at jdk-bash: ...: command not found [openfire@yfw openfire]$ 17:53:48.554 [main] ERROR org.jivesoftware.util.JiveGlobals - Unable to load default security properties from: /opt/openfire/conf/openfire.xml .internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) [?:?] at java.lang.reflect.C-bash: 17:53:48.554: command not found [openfire@yfw openfire]$ java.io.IOException: Error on line 1 of document : Premature end of file. onstructor.newInstanceWithCaller(Constructor.java:499) [?:?] at jav-bash: java.io.IOException:: command not found [openfire@yfw openfire]$ at org.jivesoftware.util.XMLProperties.buildDoc(XMLProperties.java:814) ~[xmppserver-5.0.2.jar:5.0.2] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at org.jivesoftware.util.XMLProperties.<init>(XMLProperties.java:160) ~[xmppserver-5.0.2.jar:5.0.2] at java.lang.Class.newInstance(Class.java:6-bash: init/dev/fd/62: No such file or directory [openfire@yfw openfire]$ -bash: XMLProperties.java:160: command not found ava:1312) [xmppserver-5.0.2.jar:5.0.2]lobals.loadSecurityProperties(JiveGlobals.ja -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at org.jivesoftware.util.JiveGlobals.isXMLPropertyEncrypted(JiveGlobals.java:1010) [xmppserver-5.0.2.jar:5.0.2] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at org.jivesoftware.util.XMLProperties.getProperty(XMLProperties.java:212) [xmppserver-5.0.2.jar:5.0.2] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at org.jivesoftware.util.XMLProperties.getProperty(XMLProperties.java:171) [xmppserver-5.0.2.jar:5.0.2] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at org.jivesoftware.util.JiveGlobals.getXMLProperty(JiveGlobals.java:310) [xmppserver-5.0.2.jar:5.0.2] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at org.jivesoftware.openfire.XMPPServer.initialize(XMPPServer.java:367) [xmppserver-5.0.2.jar:5.0.2] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at org.jivesoftware.openfire.XMPPServer.start(XMPPServer.java:658) [xmppserver-5.0.2.jar:5.0.2] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at org.jivesoftware.openfire.XMPPServer.<init>(XMPPServer.java:221) [xmppserver-5.0.2.jar:5.0.2] -bash: XMLProperties.java:160: command not found -bash: init/dev/fd/62: No such file or directory -bash: XMPPServer.java:221: command not found [openfire@yfw openfire]$ at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ -bash: XMPPServer.java:221: command not found onstructorAccessorImpl.java:77) [?:?]eConstructorAccessorImpl.newInstance(NativeCo -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) [?:?] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) [?:?] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at java.lang.reflect.ReflectAccess.newInstance(ReflectAccess.java:128) [?:?] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at jdk.internal.reflect.ReflectionFactory.newInstance(ReflectionFactory.java:347) [?:?] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at java.lang.Class.newInstance(Class.java:645) [?:?] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at org.jivesoftware.openfire.starter.ServerStarter.start(ServerStarter.java:92) [startup.jar:5.0.2] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at org.jivesoftware.openfire.starter.ServerStarter.main(ServerStarter.java:56) [startup.jar:5.0.2] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ 17:53:48.569 [main] ERROR org.jivesoftware.util.JiveProperties - null onstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) [?:?] at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) [?:?] at java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) [?:?] at java.lang.reflect.ReflectAccess.newInstance(ReflectAccess.java:128) [?:?] at jdk.internal.reflect.ReflectionFactory.newInstance(ReflectionFactory.java:347) [?:?] at java.lang.Class.newInstance(Class.java:645) [?:?] at org.jiveso-bash: 17:53:48.569: command not found [openfire@yfw openfire]$ java.lang.NullPointerException: null -bash: java.lang.NullPointerException:: command not found [openfire@yfw openfire]$ at java.lang.Class.forName0(Native Method) ~[?:?] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at java.lang.Class.forName(Class.java:375) ~[?:?] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at org.jivesoftware.database.DefaultConnectionProvider.start(DefaultConnectionProvider.java:99) ~[xmppserver-5.0.2.jar:5.0.2] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at org.jivesoftware.database.DbConnectionManager.setConnectionProvider(DbConnectionManager.java:652) ~[xmppserver-5.0.2.jar:5.0.2] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at org.jivesoftware.database.DbConnectionManager.ensureConnectionProvider(DbConnectionManager.java:109) ~[xmppserver-5.0.2.jar:5.0.2] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at org.jivesoftware.database.DbConnectionManager.getConnection(DbConnectionManager.java:162) ~[xmppserver-5.0.2.jar:5.0.2] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at org.jivesoftware.util.JiveProperties.loadProperties(JiveProperties.java:472) [xmppserver-5.0.2.jar:5.0.2] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at org.jivesoftware.util.JiveProperties.init(JiveProperties.java:108) [xmppserver-5.0.2.jar:5.0.2] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at org.jivesoftware.util.JiveProperties.getInstance(JiveProperties.java:84) [xmppserver-5.0.2.jar:5.0.2] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at org.jivesoftware.util.JiveGlobals.getProperty(JiveGlobals.java:547) [xmppserver-5.0.2.jar:5.0.2] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at org.jivesoftware.util.cache.CacheFactory.<clinit>(CacheFactory.java:102) [xmppserver-5.0.2.jar:5.0.2] -bash: clinit/dev/fd/62: No such file or directory -bash: CacheFactory.java:102: command not found [openfire@yfw openfire]$ at org.jivesoftware.openfire.XMPPServer.initialize(XMPPServer.java:381) [xmppserver-5.0.2.jar:5.0.2] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at org.jivesoftware.openfire.XMPPServer.start(XMPPServer.java:658) [xmppserver-5.0.2.jar:5.0.2] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at org.jivesoftware.openfire.XMPPServer.<init>(XMPPServer.java:221) [xmppserver-5.0.2.jar:5.0.2] -bash: CacheFactory.java:102: command not found -bash: init/dev/fd/62: No such file or directory penfire.starter.ServerStarter.main(ServerStarter.-bash: XMPPServer.java:221: command not found [openfire@yfw openfire]$ at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) [?:?] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) [?:?] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) [?:?] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at java.lang.reflect.ReflectAccess.newInstance(ReflectAccess.java:128) [?:?] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at jdk.internal.reflect.ReflectionFactory.newInstance(ReflectionFactory.java:347) [?:?] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at java.lang.Class.newInstance(Class.java:645) [?:?] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at org.jivesoftware.openfire.starter.ServerStarter.start(ServerStarter.java:92) [startup.jar:5.0.2] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at org.jivesoftware.openfire.starter.ServerStarter.main(ServerStarter.java:56) [startup.jar:5.0.2] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ Database setup or configuration error: Please verify your database settings and check the logs/openfire.log file for detailed error messages. -bash: Database: command not found -bash: XMPPServer.java:221: command not found [openfire@yfw openfire]$ 17:53:51.152 [main] ERROR org.jivesoftware.openfire.XMPPServer - Database could not be accessed itialised at org.jivesoftware.openfire.XMPPServer.verifyDataSource(XMPPServer.java:1020)-bash: 17:53:51.152: command not found [openfire@yfw openfire]$ java.sql.SQLException: ConnectionManager.getConnection() failed to obtain a connection after 11 attempts. The exception from the last attempt is as follows: java.sql.SQLException: Check JDBC properties; data source was not be initialised -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at org.jivesoftware.database.DbConnectionManager.getConnection(DbConnectionManager.java:204) ~[xmppserver-5.0.2.jar:5.0.2] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at org.jivesoftware.openfire.XMPPServer.verifyDataSource(XMPPServer.java:1010) [xmppserver-5.0.2.jar:5.0.2] ~[xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.openfire.XMPPServer.start(XMPPServer.java:666) [xmppserver-5.0.2.jar:5.0.2] at org.jivesoftware.openfire.XMPPServer.<init>(XMPPServer.java:221) [xmppserver-5.0.2.jar:5.0.2] a-bash: syntax error near unexpected token `(' t jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?] at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) [?:?] at jdk.internal.refle[openfire@yfw openfire]$ at org.jivesoftware.openfire.XMPPServer.starerver-5.0.2.jar:5.0.2] [xmppse -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at org.jivesoftware.openfire.XMPPServer.<init>(XMPPServer.java:221) [xmppserver-5.0.2.jar:5.0.2] t java.lang-bash: init/dev/fd/62: No such file or directory [openfire@yfw openfire]$ -bash: XMPPServer.java:221: command not found Method) ~[?:?]internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) [?:?] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) [?:?] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) [?:?] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at java.lang.reflect.ReflectAccess.newInstance(ReflectAccess.java:128) [?:?] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at jdk.internal.reflect.ReflectionFactory.newInstance(ReflectionFactory.java:347) [?:?] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at java.lang.Class.newInstance(Class.java:645) [?:?] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ -bash: XMPPServer.java:221: command not found va:92) [startup.jar:5.0.2]e.openfire.starter.ServerStarter.start(ServerStarter.jav -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at org.jivesoftware.openfire.starter.ServerStarter.main(ServerStarter.java:56) [startup.jar:5.0.2] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ java.lang.IllegalArgumentException: java.sql.SQLException: ConnectionManager.getConnection() failed to obtain a connection after 11 attempts. The exception from the last attempt is as follows: java.sql.SQLException: Check JDBC properties; data source was not be initialised -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at org.jivesoftware.openfire.XMPPServer.verifyDataSource(XMPPServer.java:1020) -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at org.jivesoftware.openfire.XMPPServer.start(XMPPServer.java:666) -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at org.jivesoftware.openfire.XMPPServer.<init>(XMPPServer.java:221) -bash: init/dev/fd/62: No such file or directory -bash: XMPPServer.java:221: command not found [openfire@yfw openfire]$ at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at java.base/java.lang.reflect.ReflectAccess.newInstance(ReflectAccess.java:128) -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at java.base/jdk.internal.reflect.ReflectionFactory.newInstance(ReflectionFactory.java:347) -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at java.base/java.lang.Class.newInstance(Class.java:645) -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at org.jivesoftware.openfire.starter.ServerStarter.start(ServerStarter.java:92) -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at org.jivesoftware.openfire.starter.ServerStarter.main(ServerStarter.java:56) -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ Caused by: java.sql.SQLException: ConnectionManager.getConnection() failed to obtain a connection after 11 attempts. The exception from the last attempt is as follows: java.sql.SQLException: Check JDBC properties; data source was not be initialised -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at org.jivesoftware.database.DbConnectionManager.getConnection(DbConnectionManager.java:204) -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at org.jivesoftware.openfire.XMPPServer.verifyDataSource(XMPPServer.java:1010) -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ ... 11 more -bash: XMPPServer.java:221: command not found -bash: ...: command not found [openfire@yfw openfire]$ 17:53:51.153 [main] ERROR org.jivesoftware.openfire.XMPPServer - java.sql.SQLException: ConnectionManager.getConnection() failed to obtain a connection after 11 attempts. The exception from the last attempt is as follows: java.sql.SQLException: Check JDBC properties; data source was not be initialised -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ java.lang.IllegalArgumentException: java.sql.SQLException: ConnectionManager.getConnection() failed to obtain a connection after 11 attempts. The exception from the last attempt is as follows: java.sql.SQLException: Check JDBC properties; data source was not be initialised -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at org.jivesoftware.openfire.XMPPServer.verifyDataSource(XMPPServer.java:1020) ~[xmppserver-5.0.2.jar:5.0.2] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at org.jivesoftware.openfire.XMPPServer.start(XMPPServer.java:666) [xmppserver-5.0.2.jar:5.0.2] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at org.jivesoftware.openfire.XMPPServer.<init>(XMPPServer.java:221) [xmppserver-5.0.2.jar:5.0.2] -bash: init/dev/fd/62: No such file or directory [openfire@yfw openfire]$ at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) [?:?] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) [?:?] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) [?:?] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at java.lang.reflect.ReflectAccess.newInstance(ReflectAccess.java:128) [?:?] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at jdk.internal.reflect.ReflectionFactory.newInstance(ReflectionFactory.java:347) [?:?] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at java.lang.Class.newInstance(Class.java:645) [?:?] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at org.jivesoftware.openfire.starter.ServerStarter.start(ServerStarter.java:92) [startup.jar:5.0.2] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at org.jivesoftware.openfire.starter.ServerStarter.main(ServerStarter.java:56) [startup.jar:5.0.2] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ Caused by: java.sql.SQLException: ConnectionManager.getConnection() failed to obtain a connection after 11 attempts. The exception from the last attempt is as follows: java.sql.SQLException: Check JDBC properties; data source was not be initialised -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ at org.jivesoftware.database.DbConnectionManager.getConnection(DbConnectionManager.java:204) ~[xmppserver-5.0.2.jar:5.0.2] -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ -bash: XMPPServer.java:221: command not found 1010) ~[xmppserver-5.0.2.jar:5.0.2]e.XMPPServer.verifyDataSource(XMPPServer.java:1 -bash: syntax error near unexpected token `(' [openfire@yfw openfire]$ ... 11 more -bash: ...: command not found [openfire@yfw openfire]$ Error starting the server. Please check the log files for more information. -bash: Error: command not found -bash: XMPPServer.java:221: command not found [openfire@yfw openfire]$
最新发布
11-16
十月 15, 2025 9:11:15 下午 org.apache.coyote.AbstractProtocol init 信息: Initializing ProtocolHandler ["http-bio-8080"] 十月 15, 2025 9:11:15 下午 org.apache.catalina.core.StandardService startInternal 信息: Starting service Tomcat 十月 15, 2025 9:11:15 下午 org.apache.catalina.core.StandardEngine startInternal 信息: Starting Servlet Engine: Apache Tomcat/7.0.47 十月 15, 2025 9:11:15 下午 org.apache.catalina.startup.ContextConfig processAnnotationsJar 严重: Unable to process Jar entry [module-info.class] from Jar [jar:file:/D:/Program%20Files/Java/apache-maven-3.6.3/mvn_resp/com/fasterxml/jackson/core/jackson-core/2.11.3/jackson-core-2.11.3.jar!/] for annotations org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 19 at org.apache.tomcat.util.bcel.classfile.Constant.readConstant(Constant.java:133) at org.apache.tomcat.util.bcel.classfile.ConstantPool.<init>(ConstantPool.java:60) at org.apache.tomcat.util.bcel.classfile.ClassParser.readConstantPool(ClassParser.java:209) at org.apache.tomcat.util.bcel.classfile.ClassParser.parse(ClassParser.java:119) at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2134) at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:2010) at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1976) at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1961) at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1319) at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:878) at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:376) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5322) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) 十月 15, 2025 9:11:16 下午 org.apache.catalina.startup.ContextConfig processAnnotationsJar 严重: Unable to process Jar entry [module-info.class] from Jar [jar:file:/D:/Program%20Files/Java/apache-maven-3.6.3/mvn_resp/com/fasterxml/jackson/core/jackson-annotations/2.11.3/jackson-annotations-2.11.3.jar!/] for annotations org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 19 at org.apache.tomcat.util.bcel.classfile.Constant.readConstant(Constant.java:133) at org.apache.tomcat.util.bcel.classfile.ConstantPool.<init>(ConstantPool.java:60) at org.apache.tomcat.util.bcel.classfile.ClassParser.readConstantPool(ClassParser.java:209) at org.apache.tomcat.util.bcel.classfile.ClassParser.parse(ClassParser.java:119) at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2134) at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:2010) at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1976) at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1961) at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1319) at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:878) at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:376) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5322) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) 十月 15, 2025 9:11:16 下午 org.apache.catalina.startup.ContextConfig processAnnotationsJar 严重: Unable to process Jar entry [module-info.class] from Jar [jar:file:/D:/Program%20Files/Java/apache-maven-3.6.3/mvn_resp/com/fasterxml/jackson/core/jackson-databind/2.11.3/jackson-databind-2.11.3.jar!/] for annotations org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 19 at org.apache.tomcat.util.bcel.classfile.Constant.readConstant(Constant.java:133) at org.apache.tomcat.util.bcel.classfile.ConstantPool.<init>(ConstantPool.java:60) at org.apache.tomcat.util.bcel.classfile.ClassParser.readConstantPool(ClassParser.java:209) at org.apache.tomcat.util.bcel.classfile.ClassParser.parse(ClassParser.java:119) at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2134) at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:2010) at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1976) at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1961) at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1319) at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:878) at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:376) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5322) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) 十月 15, 2025 9:11:17 下午 org.apache.catalina.core.ApplicationContext log 信息: 1 Spring WebApplicationInitializers detected on classpath 十月 15, 2025 9:11:17 下午 org.apache.catalina.core.ApplicationContext log 十月 15, 2025 9:11:17 下午 org.apache.catalina.core.ApplicationContext log 信息: Initializing Spring DispatcherServlet 'dispatcher' INFO] Initializing Servlet 'dispatcher' [INFO] Completed initialization in 685 ms 十月 15, 2025 9:11:18 下午 org.apache.coyote.AbstractProtocol start 信息: Starting ProtocolHandler ["http-bio-8080"]
10-16
你遇到的日志错误信息如下: ``` 严重: Unable to process Jar entry [module-info.class] from Jar [...] for annotations org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 19 ``` ### 回答问题 这个错误的根本原因是:**Tomcat 7 使用的 BCEL(Byte Code Engineering Library)库无法解析 Java 9+ 引入的 `module-info.class` 文件中的新字节码格式,尤其是当类文件版本高于其支持范围时(如 Java 8+ 编译的 class 文件)。** #### 错误原因详解: 1. **Tomcat 版本过旧(Tomcat 7.0.47)** - Tomcat 7 发布于 2010 年左右,最初只支持到 Java 7。 - 虽然后续版本支持 Java 8,但对 Java 8 的某些特性(特别是模块化相关的 `.class` 文件结构)支持不完整。 - `Invalid byte tag in constant pool: 19` 中的 “tag 19” 指的是 JVM 常量池中新增的一种类型 —— `CONSTANT_Module` 或 `CONSTANT_Package`,这是 Java 9 模块系统引入的新常量类型。而 Tomcat 7 内部使用的 BCEL 库不认识这种 tag,导致解析失败。 2. **jar 包包含 `module-info.class`** - Jackson 2.11.3 是为 Java 8+ 设计的库,并且包含了 `module-info.class`(用于 Java 9+ 模块系统),该文件由 JDK 9+ 编译生成,带有新的 class 文件格式。 - 当 Tomcat 扫描这些 JAR 文件以查找 Servlet 注解(如 `@WebServlet`, `@WebFilter` 等)时,会尝试读取所有 `.class` 文件,包括 `module-info.class`,从而触发异常。 3. **不影响运行?** - 尽管报错级别是“严重”,但大多数情况下 **应用仍能正常启动和运行**(从你的日志看 Spring 已成功初始化 DispatcherServlet)。 - 这是因为这些错误仅发生在注解扫描阶段,而现代 Spring Boot 或基于 web.xml / WebApplicationInitializer 的项目并不依赖 Tomcat 的自动注解扫描来注册核心组件。 --- ### 解决方案 #### ✅ 推荐方案一:升级 Tomcat 版本(最佳实践) 升级到 **Tomcat 8.5 或更高版本(如 Tomcat 9/10)**,它们完全支持 Java 8+ 和模块化 class 文件。 ```xml <!-- 如果你在使用 Maven + Tomcat 插件,请使用以下配置 --> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <!-- 改用 Tomcat 8 或使用其他插件 --> </configuration> </plugin> ``` 更好的选择是改用 **Spring Boot + 内嵌 Tomcat**,它默认使用较新版本的 Tomcat。 --- #### ✅ 推荐方案二:排除或屏蔽 `module-info.class` 扫描 如果你必须使用 Tomcat 7,可以通过修改 `context.xml` 来阻止 Tomcat 扫描特定 JAR 中的注解: ##### 方法:在 `META-INF/context.xml` 中添加 `JarScanner` 配置 ```xml <Context> <JarScanner> <JarScanFilter defaultTldScan="false" tldScan="*.jar" pluggabilityScan="false" annotationScan="false"/> </JarScanner> </Context> ``` 或者更精细地跳过 Jackson 相关注解扫描: ```xml <Context> <JarScanner> <JarScanFilter defaultAnnotationFilter="true" annotationFilter="jackson-.*,spring-.*,hibernate-.*"/> </JarScanner> </Context> ``` 这将告诉 Tomcat 不去扫描匹配正则表达式的 JAR 文件中的注解,避免加载 `module-info.class`。 --- #### ✅ 方案三:手动移除 `module-info.class`(不推荐生产环境) 你可以使用脚本或构建工具从 Jackson 的 JAR 文件中删除 `module-info.class`: ```bash zip -d jackson-core-2.11.3.jar module-info.class zip -d jackson-annotations-2.11.3.jar module-info.class zip -d jackson-databind-2.11.3.jar module-info.class ``` ⚠️ 注意:这会修改原始依赖包,可能导致违反许可证、部署一致性等问题,仅适用于测试或受限环境。 --- #### ✅ 方案四:禁用整个注解处理(极端情况) 在 `web.xml` 中设置 `<metadata-complete="true">`,关闭 Tomcat 的注解扫描: ```xml <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0" metadata-complete="true"> <!-- 其他配置 --> </web-app> ``` 这样 Tomcat 就不会尝试扫描任何 JAR 文件的注解,彻底规避问题。 --- ### 总结 | 方案 | 是否推荐 | 说明 | |------|----------|------| | 升级 Tomcat 到 8.5+ | ✅✅✅ 强烈推荐 | 根本解决兼容性问题 | | 配置 `JarScanner` 过滤 | ✅ 推荐 | 快速修复老版本兼容问题 | | 删除 `module-info.class` | ⚠️ 谨慎使用 | 可行但破坏依赖完整性 | | 设置 `metadata-complete="true"` | ✅ 可接受 | 若不用注解自动注册 | --- ### 相关建议 - Tomcat 7 已于 2021 年停止维护,存在安全风险,建议尽快迁移至 Tomcat 9 或以上。 - Jackson 2.11.3 最低要求 Java 8,但编译目标可能是 Java 9+,与老旧容器不兼容属正常现象。 - 使用 Spring Boot 可自动管理内嵌容器版本,避免此类底层冲突。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值