Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决

简介: 如果遇到"exec format error"问题,文章建议先检查Linux操作系统是32位还是64位,并确保安装了与系统匹配的JDK版本。如果系统是64位的,但出现了错误,可能是因为下载了错误的JDK版本。文章提供了一个链接,指向Oracle官网上的JDK 17 Linux版本下载页面,并附有截图说明。

Java - jdk

jdk17 linux 版本压缩包
https://www.oracle.com/cn/java/technologies/downloads/#jdk17-linux

  1. 通过xftp将jdk17的压缩包传输到/tmp下
    在这里插入图片描述

  2. 执行解压缩命令到/usr/local中

tar -zxvf jdk-17_linux-x64_bin.tar.gz -C /usr/local
  1. 将刚刚解压出来的jdk17的目录重新命名为java
mv /usr/local/jdk-17.0.9/ /usr/local/java
  1. 编写环境变量配置文件(等同于windows下的系统环境变量配置 path 里面新增jdk的位置)
vim /etc/profile

在这里插入图片描述

  1. 更新环境变量配置
source /etc/profile
  1. 验证java环境是否配置成功
java -version

在这里插入图片描述

可能会出现的问题

bash: /usr/local/java/bin/java: cannot execute binary file: exec format error

  1. 先查看当前的linux操作系统是32位还是64位(安装对应的jdk)
uname -m

在这里插入图片描述

(显示 i686 (or 有时候会是i386) 说明操作系统是32位的,但是如果显示的是 x86_64,那就说明这个操作系统是64位的。)

发现并不是操作系统的事情,那么就应该是装错了版本。

  1. 安装下图第三个

在这里插入图片描述

tar -zxvf jdk-17_linux-x64_bin.tar.gz -C /usr/local

mv /usr/local/jdk-17.0.9/ /usr/local/java

vim /etc/profile

# shift + G 定位到末尾进行添加
export JAVA_HOME=/usr/local/java
export PATH=$JAVA_HOME/bin:$PATH

# 更新配置文件
source /etc/profile

# 再次查看环境变量
java -version

小结:配置环境变量,首先linux版本的jdk要仔细看一下,不然的话,配置完后使用Java-version会找不到对应的指令集。

相关文章
|
7月前
|
Java Linux Apache
Apache NetBeans 27 (macOS, Linux, Windows) - Java 等多语言开源跨平台 IDE
Apache NetBeans 27 (macOS, Linux, Windows) - Java 等多语言开源跨平台 IDE
419 5
Apache NetBeans 27 (macOS, Linux, Windows) - Java 等多语言开源跨平台 IDE
|
9月前
|
Java Linux 开发者
linux 查看java的安装路径
本指南详细介绍Java环境的安装验证与配置方法,包括检查Java版本、确认环境变量JAVA_HOME是否正确配置,以及通过which和readlink命令手动定位Java安装路径。同时提供系统级环境变量配置步骤,并给出多版本管理建议。适用于Linux系统用户,特别是需要在服务器或Docker容器中部署Java环境的开发者。注意操作时需具备相应权限,确保路径设置准确无误。
|
11月前
|
监控 数据可视化 Java
调试技巧 - 用Linux命令排查Java问题
总的来说,使用Linux命令来排查Java问题,需要一定的实践经验和理论知识。然而,只要我们愿意花时间深入了解这些工具,我们就能够熟练地使用它们来分析和解决问题。此外,这些工具只是帮助我们定位问题,真正解决问题需要我们对Java和JVM有深入的理解,并能够读懂和分析代码。
566 13
|
监控 Linux
Linux systemd 服务启动失败Main process exited, code=exited, status=203/EXEC
通过以上步骤,可以有效解决 systemd 服务启动失败并报错 `Main process exited, code=exited, status=203/EXEC` 的问题。关键在于仔细检查单元文件配置、验证可执行文件的有效性,并通过日志分析具体错误原因。确保可执行文件路径正确、文件具有执行权限,并且可以独立运行,将有助于快速定位和解决问题。
5773 7
|
分布式计算 Java Hadoop
linux中HADOOP_HOME和JAVA_HOME删除后依然指向旧目录
通过以上步骤,可以有效地解决 `HADOOP_HOME`和 `JAVA_HOME`删除后依然指向旧目录的问题。确保在所有相关的配置文件中正确设置和删除环境变量,并刷新当前会话,使更改生效。通过这些措施,能够确保系统环境变量的正确性和一致性。
317 1
|
消息中间件 存储 Linux
Linux手账—exec和fork
本文介绍了Linux系统中进程控制的核心功能——`fork`和`exec`系列函数。`fork`用于创建新进程(子进程),继承父进程的资源但拥有独立的地址空间;`exec`系列函数则在当前进程中执行新程序,替换原有地址空间。文章详细解析了这些函数的基本概念、用法及工作原理,强调了它们在多进程编程中的重要性。
301 0
|
运维 Java Linux
【运维基础知识】Linux服务器下手写启停Java程序脚本start.sh stop.sh及详细说明
### 启动Java程序脚本 `start.sh` 此脚本用于启动一个Java程序,设置JVM字符集为GBK,最大堆内存为3000M,并将程序的日志输出到`output.log`文件中,同时在后台运行。 ### 停止Java程序脚本 `stop.sh` 此脚本用于停止指定名称的服务(如`QuoteServer`),通过查找并终止该服务的Java进程,输出操作结果以确认是否成功。
1074 1
|
Java Linux Maven
用sdkman在linux上管理多个java版本
本文介绍了如何在Linux上使用SDKMAN来管理多个Java版本,包括安装SDKMAN、验证安装、列出和安装不同版本的JDK、Maven和Gradle,以及如何切换使用不同版本。
1362 0
|
消息中间件 分布式计算 Java
Linux环境下 java程序提交spark任务到Yarn报错
Linux环境下 java程序提交spark任务到Yarn报错
351 5