linux环境下hudson/jenkins集成部署android项目--安装配置Tomcat

本文介绍了如何在Linux环境下使用Jenkins集成部署Android项目,包括安装配置Tomcat、使用Jenkins进行持续集成、自动测试、邮件通知等功能,以及批量打包APK的流程。

此文章转载于2015.07.08,发布于网易博客,于2020.03.25迁移至此。

 

转载原文地址:http://www.cnblogs.com/gccBlog/p/3454606.html

随着集成化、自动化开发测试技术的不断完善,本着提高代码质量的初衷,使用hudson来集成android项目是一个很好的选择。

Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使持续集成变成可能。

Jenkins,之前叫做Hudson,是基于Java开发的一种集成工具工具,用于监控秩序重复的工作,包括:

1、持续的软件版本发布/测试项目。

2、监控外部调用执行的工作。

 

jenkins用在android项目开发上能提供很多很好的功能,包括:

1.检查程序中lint、findbugs、checkstyle发现的bug;

2.能根据代码版本控制工具,特别是svn,进行自动测试(在有代码提交时自动触发功能);

3.出现问题自动发送邮件通知相关负责人;

4.集成ant编译功能,自动编译;

5.批量打包apk,使编译渠道包更方便;

 

下面简单介绍linux环境下hudson/jenkins集成部署android项目。

 

安装配置Tomcat

一、下载最新版本Tomcat,地址http://mirror.esocc.com/apache/tomcat/tomcat-8/v8.0.0-RC5/bin/apache-tomcat-8.0.0-RC5.tar.gz

二、将压缩包拷贝到你想要的路径,解压文件tar -zxvf apache-tomcat-8.0.0-RC5.tar.gz

三、启动tomcat,/opt/tomcat/apache-tomcat-8.0.0-RC5/bin/startup.sh

Using CATALINA_BASE: /opt/tomcat/apache-tomcat-8.0.0-RC5

Using CATALINA_HOME: /opt/tomcat/apache-tomcat-8.0.0-RC5

Using CATALINA_TEMDIR: /opt/tomcat/apache-tomcat-8.0.0-RC5/temp

Using JRE_HOME: /opt/java/jdk1.7.0_45

四、浏览器打开localhost:8080,显示tomcat欢迎页,安装成功。

你遇到的这个错误是典型的 **Java 版本不兼容问题**,我们来详细分析并解决。 --- ## ❌ 错误信息解析 ```bash Exception in thread "main" java.lang.UnsupportedClassVersionError: hudson/remoting/Launcher has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0 ``` ### 🔍 关键点解读: - `class file version 55.0` → 对应 **Java 11** - `only recognizes up to 52.0` → 当前运行环境是 **Java 8(JDK 1.8)** - `hudson.remoting.Launcher` 是 Jenkins 的远程代理启动类,从较新版本开始使用 Java 11 编译 > ✅ 结论: > **你正在用 Java 8 运行 Jenkins 或 Maven Agent,但 Jenkins 插件中的类是用 Java 11 编译的,导致无法加载。** --- ## 📌 根本原因 | 组件 | 版本要求 | |------|----------| | Jenkins ≥ 2.358+ | 需要 **Java 11 或更高** | | Maven Plugin(新版) | 使用了 Java 11 编译的 remoting 包 | 你的环境- 使用的是:`/data/software/jdk1.8.0_291/bin/java`(Java 8) -Jenkins WAR 和插件中包含 Java 11 编译的字节码(如 `remoting-3261.v9c670a_4748a_9.jar`) → 所以 JVM 抛出 `UnsupportedClassVersionError` --- ## ✅ 解决方案 ### ✅ 方案一:【推荐】升级 Jenkins 启动所用的 JDK 到 Java 11 或以上 #### 步骤 1:安装 Java 11(或 Java 17) 例如使用 OpenJDK: ```bash # Ubuntu/Debian sudo apt update sudo apt install openjdk-11-jdk # CentOS/RHEL sudo yum install java-11-openjdk-devel # macOS(使用 Homebrew) brew install openjdk@11 ``` 或者手动下载 Oracle/OpenJDK 并解压。 #### 步骤 2:修改 Jenkins 启动时的 Java 路径 根据你的系统方式不同,修改如下配置文件之一: ##### 情况 A:使用 systemd 管理 Jenkins(常见于 Linux) 编辑服务文件: ```bash sudo systemctl edit jenkins ``` 或直接修改: ```bash sudo vim /etc/default/jenkins # Debian/Ubuntu # 或 sudo vim /etc/sysconfig/jenkins # CentOS/RHEL ``` 找到 `JAVA` 或 `JENKINS_JAVA_BIN` 变量,改为 Java 11 路径: ```bash JAVA="/usr/lib/jvm/java-11-openjdk/bin/java" ``` > 示例路径可能为: > - `/usr/lib/jvm/java-11-openjdk-amd64/bin/java`(Ubuntu) > - `/Library/Java/JavaVirtualMachines/openjdk-11.jdk/Contents/Home/bin/java`(macOS) ##### 情况 B:使用 Tomcat 部署 Jenkins WAR 修改 `setenv.sh` 或 `catalina.sh` 中的 `JAVA_HOME`: ```bash export JAVA_HOME=/path/to/jdk-11 export PATH=$JAVA_HOME/bin:$PATH ``` #### 步骤 3:重启 Jenkins ```bash sudo systemctl restart jenkins ``` #### 验证是否生效 进入 Jenkins 页面: ``` 管理 Jenkins → 系统信息 ``` 查找 `java.version`,应该显示类似: ``` 11.0.2 or 11.0.12 ``` 此时再执行 Maven 构建就不会报错。 --- ### ✅ 方案二:降级 Jenkins 和插件(不推荐,仅临时应急) 如果你暂时不能升级 JDK,可以尝试: 1. 回退到 **Jenkins LTS 版本 ≤ 2.346.3**(最后一个支持 Java 8 的版本) 2. 手动降级 `maven-plugin` 和 `remoting` 插件 但这会失去安全更新和功能支持,**强烈不推荐长期使用**。 --- ### ✅ 方案三:检查 Maven 是否也需匹配 Java 版本 确保你在 “全局工具配置” 中配置的 Maven 不强制依赖高版本 Java。 路径: ``` 管理 Jenkins → 全局工具配置 → Maven installations ``` - 如果你使用的 Maven 是 3.8.6+,它本身也需要 Java 8+,但最好与 Jenkins 一致。 - 推荐使用 OpenJDK 11 搭配 Maven 3.8.x + Jenkins 2.358+ --- ## 🧪 补充验证命令 在服务器上运行以下命令确认 Java 版本: ```bash # 查看当前默认 Java java -version # 明确调用某个 JDK /data/software/jdk1.8.0_291/bin/java -version # 应该输出:1.8.0_291 /usr/lib/jvm/java-11-openjdk/bin/java -version # 应该输出:11.x.x ``` --- ## 🛠️ 修复后示例正确的启动命令(由 Jenkins 自动生成) ```bash /usr/lib/jvm/java-11-openjdk/bin/java \ -cp /var/lib/jenkins/plugins/maven-plugin/WEB-INF/lib/maven35-agent-1.14.jar:\ /opt/maven/boot/plexus-classworlds-2.6.0.jar:/opt/maven/conf/logging \ jenkins.maven3.agent.Maven35Main \ /opt/maven \ /var/cache/jenkins/war/WEB-INF/lib/remoting-3261.v9c670a_4748a_9.jar \ /var/lib/jenkins/plugins/maven-plugin/WEB-INF/lib/maven35-interceptor-1.14.jar \ /var/lib/jenkins/plugins/maven-plugin/WEB-INF/lib/maven3-interceptor-commons-1.14.jar \ 42865 ``` ✅ 这样就不会出现版本冲突。 --- ## 🚫 常见误区提醒 | 误区 | 正确认知 | |------|---------| | “JDK 8 最稳定,不需要升级” | Jenkins 官方已放弃对 Java 8 的支持 | | “只要代码能跑就行” | 新版插件、安全补丁都需要 Java 11+ | | “换个旧版 Maven 插件就行” | 插件之间有依赖关系,容易引发更多问题 | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值