Ubuntu系统编译Java程序所需依赖库详解
Ubuntu 编译 OpenJDK 的依赖清单与版本要点
想在 Ubuntu 上成功编译 OpenJDK,准备工作是关键。这活儿说难不难,但依赖包和版本要是没搞对,后续的编译过程就会麻烦不断。下面这份清单,帮你把通用依赖和不同版本的差异化要点都理清楚了,照着来能省不少事儿。
免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈
一、通用基础依赖
无论你编译哪个版本的 OpenJDK,下面这些基础依赖都是绕不开的。它们构成了编译的底层工具链,并支撑了 HotSpot 虚拟机、图形界面(AWT)、字体渲染和打印等核心模块。
- 构建工具与基础编译链:build-essential、gcc、g++、make、autoconf、zip。这是编译工作的“脚手架”。
- 字体与图形渲染:libfreetype6-dev、libfontconfig1-dev。没有它们,Ja va的字体显示会出问题。
- 打印系统:libcups2-dev。提供打印服务的底层支持。
- X11 相关(窗口系统、渲染、测试等):libx11-dev、libxext-dev、libxrender-dev、libxrandr-dev、libxtst-dev、libxt-dev。这一系列库负责图形界面的显示和交互。
- 音频:libasound2-dev。让Ja va程序能“发声”。
- 外部函数接口与兼容性:libffi-dev。用于本地接口调用。
- 源码获取工具:OpenJDK 源码托管在 Mercurial 仓库,所以需要安装
mercurial。
把这些通用依赖装齐,就为编译打下了最坚实的基础。
二、按 OpenJDK 版本的差异化要点
不同版本的 OpenJDK 对编译环境和引导JDK(Bootstrap JDK)的要求各不相同,这是最容易踩坑的地方。务必对号入座。
- OpenJDK 7
- Bootstrap JDK:必须使用 JDK 7 本身。用 JDK 8 来编译 JDK 7 是行不通的。
- 构建工具:建议使用 Ant 1.9.x 版本。因为 Ant 1.10 及以上版本需要 JDK 8 支持,与 JDK 7 不兼容。
- 其他常见依赖:gawk、m4、ca-certificates、ca-certificates-ja va 这些工具和证书包也常常需要。
- OpenJDK 8
- Bootstrap JDK:需要 JDK 7 作为引导。
- 常见依赖:除了通用依赖外,要特别确保 libx11-dev、libxext-dev、libxrender-dev、libxtst-dev、libxt-dev、libcups2-dev、libfreetype6-dev、libasound2-dev 这些库已安装。
- OpenJDK 11/12/16 等更高版本
- Bootstrap JDK:遵循“N-1”原则。即编译 JDK 12 需要用 JDK 11 作为引导,编译 JDK 16 则需要 JDK 15,以此类推。
- 常见依赖:在通用依赖的基础上,再次核对 libfreetype6-dev、libfontconfig1-dev、libcups2-dev、X11 系列库、libasound2-dev、libffi-dev、autoconf 是否都已就位。
这些版本差异是无数实践经验的总结,编译前仔细核对能避免大部分基础错误。
三、一键安装示例命令
为了操作方便,这里给出几条可以直接在终端执行的命令。你可以根据自己的目标版本进行选择。
- Ubuntu 18.04/20.04/22.04(通用,适合 JDK 11+)
sudo apt-get updatesudo apt-get install -y build-essential autoconf zip libx11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev libcups2-dev libfreetype6-dev libfontconfig1-dev libasound2-dev libffi-dev mercurial
- 如需编译 OpenJDK 7,在上述命令安装的基础上,还需要补充:
gawk m4 ant-1.9.x ca-certificates ca-certificates-ja va。 - 如需编译 OpenJDK 8,最关键的一步是确保已安装 JDK 7 作为 Bootstrap JDK。可以通过
apt安装openjdk-7-jdk,或者手动下载解压后正确设置JA VA_HOME环境变量。
四、配置与排错要点
依赖装好了,只是第一步。接下来的配置(configure)阶段才是真正的考验。这里有几个关键参数和常见错误的解决方法。
- 使用 configure 明确依赖路径
- FreeType 库的路径经常需要手动指定,命令示例如下:
bash configure --with-freetype-include=/usr/include/freetype2 --with-freetype-lib=/usr/lib/x86_64-linux-gnu
- FreeType 库的路径经常需要手动指定,命令示例如下:
- 指定 Bootstrap JDK(示例)
- 明确告诉配置脚本引导JDK的位置:
bash configure --with-boot-jdk=/usr/lib/jvm/ja va-11-openjdk-amd64
- 明确告诉配置脚本引导JDK的位置:
- 常见报错与处理
- “freetype not found” → 首先确认
libfreetype6-dev已安装,然后在configure命令中正确设置--with-freetype-include和--with-freetype-lib路径。 - “fontconfig missing” → 安装
libfontconfig1-dev包。 - “X11/xtst/xt missing” → 分别安装对应的
libx11-dev、libxtst-dev、libxt-dev等开发包。 - “configure: error: Could not find a valid Boot JDK” → 检查是否安装了符合“N-1”原则的正确JDK版本,并通过
--with-boot-jdk参数指定其绝对路径。 - “Ant version too new for JDK 7” → 编译 JDK 7 时,务必使用 Ant 1.9.x 版本,不要用更新的。
- “sanity check failed” → 这类综合性错误需要系统排查:检查
LANG等环境变量是否设置正确(建议设为C.UTF-8);清理旧的JA VA_HOME或CLASSPATH设置;最后再整体确认一遍所有依赖是否安装齐全。
- “freetype not found” → 首先确认
上面这些配置参数和排错思路,都是从多个版本的实际编译记录中提炼出来的,遇到问题不妨先从这里找找答案。
相关攻略
在Ubuntu16 04系统中安装Java8和Java9。需注意Java9可能不完全向后兼容。安装均通过添加Webupd8PPA仓库、执行安装命令并同意许可协议完成。安装后需分别设置默认版本或环境变量,最后可通过`java-version`命令验证安装结果。
LNMP环境中优化数据库查询需系统实施。关键步骤包括:根据业务选择存储引擎,优化表结构与字段类型,合理创建索引,编写高效SQL语句避免全表扫描。引入缓存层减轻数据库压力,使用连接池管理连接,必要时采用查询提示或分区表。定期维护数据库并监控慢查询,以实现持续性能提升。
HBase数据恢复需按步骤进行:先确认集群状态并定位故障,操作前备份数据。恢复时可选用内置工具、快照、WAL回放或手动替换文件等方法。完成后验证数据完整性与集群健康,持续监控优化。注意版本兼容性,在业务低峰期操作,并建立定期备份策略。
HBase数据备份主要有五种方法。使用自带工具可进行全量或增量备份。快照功能通过创建元数据引用实现快速备份与恢复。直接备份HDFS底层文件适合长期归档或迁移。第三方工具如DistCp和XtraBackup提供压缩、加密等增强功能。集群间复制机制支持实时同步,满足异地容灾需求。
优化Apache2应用的数据库连接可提升性能,主要方法包括:使用持久连接或连接池复用连接以降低开销;限制并发连接数防止数据库过载;利用缓存减少查询;优化SQL语句与索引;调整数据库配置以适应负载;持续监控并动态调优,保障系统高效运行。
热门专题
热门推荐
要监控CentOS上的PHP-FPM,您可以使用以下方法 使用命令行工具 对于习惯与终端打交道的运维人员来说,命令行工具是最直接的选择。 top:这是最经典的实时系统监控工具。想快速聚焦PHP-FPM进程?很简单,运行top后,按下u键,再输入运行PHP-FPM的用户名,界面就会立刻筛选出相关进程,
在CentOS上使用Docker容器化部署PHP应用 将PHP应用进行容器化部署,如今已成为提升开发一致性和运维效率的标准操作。在CentOS环境下,借助Docker平台,我们可以快速搭建起一个独立、可移植的运行环境。下面,就让我们一起梳理一下从零开始的基本部署流程。 1 安装Docker 万事开
在CentOS上使用PHP实现并发处理,可以采用以下几种方法: 想让PHP在CentOS上跑得更快、处理更多任务?并发处理是关键。别担心,PHP生态里其实有不少成熟的方案可选,每种都有其独特的适用场景。下面我们就来聊聊几种主流的方法,从多线程到消息队列,帮你找到最适合你项目的那一款。 1 使用多线
在CentOS系统中集成VSFTPD与其他服务 在CentOS服务器环境中,VSFTPD(Very Secure FTP Daemon)因其出色的安全性和稳定性,成为搭建FTP服务的首选。但你是否想过,让这个传统的FTP守护进程与现代的Web服务(比如Apache或Nginx)联动起来?这样一来,用
币安现货交易是加密货币买卖的基础方式,适合新手入门。操作前需完成账户注册、身份验证和资金充值。交易界面主要分为行情、交易对选择和订单簿区域,下单时可选择市价单或限价单。掌握基本的买入卖出操作后,还需了解止盈止损等风险管理工具,并注意资产安全与市场波动性,从小额交易开始实践。





