我使用的是Oozie 4.2.0软件包(http://archive.apache.org/dist/oozie/4.2.0/)。我构建了这个Oozie包源,并在过去2年中在Windows和Linux机器中使用它。但是,今天我在新创建的Linux机器上启动oozie服务器(/bin/oozied.sh run)时出现以下错误。
设置oozie数据库设置CATALINA_OPTS =“$ CATALINA_OPTS -Xmx1024m”
在线程“main”中验证数据库连接异常 java.lang.ExceptionInInitializerError 在org.apache.oozie.service.Services。(Services.java:114) 在org.apache.oozie.tools.OozieDBCLI.getJdbcConf(OozieDBCLI.java:164) 在org.apache.oozie.tools.OozieDBCLI.createConnection(OozieDBCLI.java:853) 在org.apache.oozie.tools.OozieDBCLI.validateConnection(OozieDBCLI.java:861) 在org.apache.oozie.tools.OozieDBCLI.createDB(OozieDBCLI.java:182) 在org.apache.oozie.tools.OozieDBCLI.run(OozieDBCLI.java:126) 在org.apache.oozie.tools.OozieDBCLI.main(OozieDBCLI.java:77)引起:java.lang.IllegalArgumentException:无效的TimeZone:UTC 在org.apache.oozie.util.DateUtils.getTimeZone(DateUtils.java:146) 在org.apache.oozie.util.DateUtils。(DateUtils.java:44) ......还有7个
当我在Oozie源文件中跟踪此错误时。 DateUtils.java文件如下所示。
此处运行以下时间值
tzId =“UTC”
tz = sun.util.calendar.ZoneInfo [id =“GMT”,offset = 0,dstSavings = 0,useDaylight = false,transitions = 0,lastRule = null]
tz.getID() =“GMT”
因此,在DateUtils.java中检查以下条件时。它总是成功并在我的情况下抛出IllegalArgumentException。
if (!tz.getID().equals(tzId)) {
throw new IllegalArgumentException("Invalid TimeZone: " + tzId);
}
我的问题是为什么我的机器时区在java代码中检测时区id“GMT”。为什么Apache oozie正在检查这种情况。 请帮我启动Oozie服务器。在此先感谢。
机器环境详细信息:
Ubuntu 16.04.4 LTS(GNU / Linux 4.4.0-116-generic x86_64)
locale - LANG = en_US.UTF-8
时区 - 欧洲/柏林