我目前遇到的一些问题是一个CentOS6环境。以前安装了Java7,最近对Java8应用程序进行了更新,并特别使用了Java8 LocalDate.now()函数提供了新特性。当然,Java8的安装是为了让它能够工作--但是--它没有。
我在这里尝试遵循OpenJDK 8安装说明(也更新了“替代方案”),但这没有奏效-- https://www.digitalocean.com/community/tutorials/how-to-install-java-on-centos-and-fedora#install-openjdk-8
我还尝试在同一链接上安装Oracle 8版本,但由于Oracle出现了新的恼人的许可问题,该版本无法工作,而且命令不断地说我未经授权就可以下载.tar文件。
我有点不知道下一步该做什么。据我所见,我认为Open 8的版本是在LocalDate.now()引入之前的几个版本;
java -version命令说;
openjdk version "1.8.0_232"
OpenJDK Runtime Environment (build 1.8.0_232-b09)
OpenJDK 64-Bit Server VM (build 25.232-b09, mixed mode)看上去是25楼。然而,根据这个链接,https://coderanch.com/t/716444/java-lang-ClassNotFoundException-Didn-find,看起来构建的最小版本是使用LocalDate.now()函数的版本26。
理想情况下,我希望使用Oracle JDK 8版本来匹配开发环境,但我也无法做到这一点。甲骨文很烦人。这是当我试图在安装Oracle JDK 8的数字海洋链接上运行命令时收到的错误消息;
Connecting to login.oracle.com|209.17.4.8|:443... connected.
HTTP request sent, awaiting response... 401 Authorization Required
Authorization failed.不确定是否还需要在包含登录凭据的命令上传递另一个标志,我还没有找到任何有关这方面的指南。
Update1
只要按照建议通过AdoptOpenJDK安装AdoptOpenJDK并将其配置为通过“替代品”使用,'java -version‘输出如下;
openjdk version "1.8.0_232"
OpenJDK Runtime Environment (build 1.8.0_232-b09)
Eclipse OpenJ9 VM (build openj9-0.17.0, JRE 1.8.0 Linux amd64-64-Bit Compressed References 20191017_442 (JIT enabled, AOT enabled)
OpenJ9 - 77c1cf708
OMR - 20db4fbc
JCL - 97b5ec8f383 based on jdk8u232-b09)然而,我仍然看到日志文件中的错误输出;
java.lang.ClassNotFoundException: java.time.LocalDate更新2
按照建议返回到真正的基础,这是有帮助的,但造成了更多的混乱。我测试过了;
1)使用主方法在本地编译HelloWorld,将.class文件推送到服务器,并使用java命令运行该文件--
2)使用主方法在本地创建HelloWorld.java,将.java文件推送到服务器,使用javac在服务器上编译以创建HelloWorld.class,并使用java命令运行该文件--
3)在本地创建HelloWorldServlet.java,在本地编译,将.class文件推送到服务器,并在浏览器中运行/HelloWorld --这会失败并引发错误。
因此,我开始怀疑这是否与Tomcat 7的设置方式有关。它实际上是由轻松的Apache 3通过cPanel的WHM来管理的,这无助于解决这一问题,因为它已经很老了,确实需要进行重大的升级。
这是令人沮丧的,因为它只在安装了Apache的标准Linux盒上工作。理想情况下,我想让这个工作成为-是这样,我可以进一步拖延,并避免做一个完整的服务器重新构建,迁移和web应用程序的设置-但是-它看起来不好.
对尝试的选择有什么最后的想法吗?
发布于 2020-01-25 20:37:32
解决办法..。关闭服务器控制面板,它们增加了复杂性,而没有提供任何真正的好处。
事实证明,这个问题实际上是由于Tomcat最初是通过EasyApache3在cPanel系统上安装的。在安装时,看起来EasyApache3认为在Tomcat启动脚本中硬编码java版本是一个很棒的主意。因此,当您在系统上更新Java版本时,Tomcat启动脚本实际上一直使用旧版本。我设法找到了脚本搜索和更新的代码,解决了这个问题。
我的意思是,说真的,谁会这么做??#BangingHeadAgainstWall --为cPanel / EasyApache3构建它的开发人员需要对自己有一个强有力的了解!
https://stackoverflow.com/questions/59849348
复制相似问题