新闻详情

新闻详情

首页 / 资讯中心 / 详情

libphonenumber Java Demo 运行指南:从安装 Google Cloud SDK 到启动号码解析演示应用

发布时间:2026/10/1 2:12:53来源:尧图网络
libphonenumber Java Demo 运行指南:从安装 Google Cloud SDK 到启动号码解析演示应用
后端移动开发【免费下载链接】libphonenumberGoogles common Java, C and JavaScript library for parsing, formatting, and validating international phone numbers.项目地址https://gitcode.com/GitHub_Trending/li/libphonenumber点击查看免费下载libphonenumber 的 Java 版本在 java/demo 目录下附带了一个可直接运行的 Web 演示应用Demo用户输入一串电话号码并选择一个默认国家/地区即可实时看到该号码被解析、验证、格式化以及地理区域描述等结果。本文以 java/demo/README.md 为骨架结合 pom.xml、web.xml 与 ResultServlet.java 等工程源码完整讲解在 Linux/Mac 上从零搭建运行环境、在主流 IDE 中启动 Demo以及将 Demo 部署到自己的 Google App Engine 应用的完整流程。读完本文你将掌握这套 Demo 的启动方式、工程结构与底层请求处理链路能够把它作为验证 libphonenumber 解析行为的本地工具使用。Demo 是什么先理解你要运行的应用在动手安装环境之前有必要先弄清楚这个 Demo 的定位。它是 libphonenumber Java 库的一个 Web 化使用样例运行在 Google App Engine标准环境上核心功能在 ResultServlet.java 的类注释中写得很清楚接受包含电话号码字符串和默认国家一个两位字母的区域码的请求并返回对该号码进行解析、校验和格式化的结果。从 web.xml 可以看到该应用的三个 Servlet 映射Servlet 名称实现类URL 模式InputInputServlet.java/inputform与/根路径PhoneNumberParserResultServlet.java/phonenumberparser两个 Servlet 各司其职InputServletdoGet方法直接渲染一个 HTML 输入表单InputFormRenderer让用户填写电话号码、默认国家/地区码等信息ResultServletdoPost接收表单提交支持普通字段与文件上传doGet则接收带number、country、geocodingLocale查询参数的直接访问最终调用PhoneNumberUtil完成解析并把结果交给 ResultRenderer 渲染成页面。因此运行 Demo 本质上就是启动一个标准的 Java Web 应用war 包而官方 README 推荐的路径是本地装好 Google Cloud SDK 的 App Engine 组件 IDE 安装 Cloud Code 插件由插件识别工程配置并启动本地开发服务器。第 1 步安装 Google Cloud SDK 与 Java App Engine 组件Demo 依赖 Google App Engine 的 Java 运行时环境来启动官方文档要求在本地安装 Google Cloud SDK并确保其中包含 Java 版 App Engine 组件。Linux 环境在 Debian/Ubuntu 系发行版上官方 README 给出的安装命令是$ sudo apt-get install google-cloud-sdk-app-engine-java该软件包会为已安装的 Google Cloud SDK 补充 Java App Engine 支持。若此前尚未安装 Cloud SDK 本体需要先按 Google 官方指引完成 SDK 安装再执行上述命令。Mac 环境在 macOS 上先通过 Homebrew 安装 Google Cloud SDK$ brew install google-cloud-sdk随后使用gcloud命令行工具安装 Java App Engine 组件$ gcloud components install app-engine-java安装完成后可用gcloud --version与gcloud components list确认 SDK 及组件是否就绪。这一步是后面 IDE 插件能够自动识别配置并启动应用的基础。第 2 步在 IDE 中安装 Cloud Code 插件官方 README 为三款主流 IDE 提供了对应的 Google Cloud 开发插件Cloud Code统一负责 App Engine 应用的本地调试与部署IntelliJ IDEA安装 Cloud Code Plugin for IntelliJ。如果此前使用过旧的 App Engine 插件需要先按 Google 官方的迁移说明迁移到 Cloud CodeEclipse安装 Google Cloud Tools for Eclipse 插件即 Cloud Code for EclipseVisual Studio Code安装 Cloud Code 扩展Cloud Code for VS Code。插件通常可以在各 IDE 自带的插件市场中直接搜索安装如 JetBrains Marketplace、VS Code Marketplace。安装完成后建议重启 IDE因为 README 特别指出大多数 IDE 会在安装并重启插件后自动识别出当前工程的运行配置。第 3 步启动 Demo方式一IDE 内运行推荐安装 Cloud Code 插件并重启后工程会被自动识别。在 IntelliJ IDEA 等 IDE 中为工程创建 App Engine 运行配置Run Configuration即可一键启动本地开发服务器浏览器访问http://localhost:8080/就能看到输入页面。方式二命令行原生运行可选如果不使用 IDE也可以直接用 Maven 启动$ mvn appengine:run该命令依赖 pom.xml 中声明的com.google.cloud.tools:appengine-maven-plugin版本 2.4.4。不过官方 README 明确提醒原生方式不建议搭配 IDE 使用因为你需要自行管理构建产物的更新而且它不支持热重载live reload——每次改代码都要重新编译打包才能看到效果。值得注意的是Demo 的 Java 字节码编译目标为 Java 8maven-compiler-plugin 显式配置了source/target为 8而 appengine-web.xml 声明的运行环境是java17说明编译产物运行在 App Engine 的 Java 17 运行时上本地启动前请确认本机 JDK 版本能够满足运行要求。深入源码Demo 的请求处理链路理解了如何启动之后再看一看它内部的解析流程这有助于你把 Demo 当作调试工具来用。POST 请求表单与文件批量解析ResultServlet.doPost 使用 Apache Commons FileUpload 解析 multipart 表单主要处理四类字段字段名含义处理方式phoneNumber待解析的电话号码原样读取defaultCountry默认国家/地区两位字母码读取后转大写languageCode地理编码展示语言读取后转小写默认enregionCode区域码用于构造地理编码 Locale读取后转大写代码中通过upload.setSizeMax(50000)将单次上传体积限制为 50KB若请求附带文件则读取文件内容交给 ResultFileRenderer 做批量解析若只是普通字段提交则通过 WebHelper.getPermaLinkURL 生成一个带查询参数的固定链接重定向到结果页——这样每个输入都对应一个可分享、可复现的 URL。GET 请求单号码直接出结果doGet从查询参数读取number、country、geocodingLocale然后调用PhoneNumber number phoneUtil.parseAndKeepRawInput(phoneNumber, defaultCountry);phoneUtil来自PhoneNumberUtil.getInstance()单例parseAndKeepRawInput在 PhoneNumberUtil.java 中定义它在标准parse的基础上额外保留用户输入的原始文本如括号、空格等格式字符便于结果页对比展示原始输入与规范化结果。如果号码无法解析会抛出NumberParseException由 ErrorRenderer 渲染错误信息页。这也印证了 README 的定位这个 Demo 是 libphonenumber 解析、校验、格式化能力的最直观可视化窗口——你输入什么格式的号码、带什么国家区号、期望什么语言的地区描述都能立刻看到库的对应行为。工程配置详解理解 Demo 的构建与运行环境pom.xmlwar 包、插件与依赖java/demo/pom.xml 是理解整个 Demo 构建方式的关键文件打包方式packagingwar/packaging这是一个标准的 Web 应用工程父工程为libphonenumber-parent版本 9.0.41-SNAPSHOTApp Engine 插件com.google.cloud.tools:appengine-maven-plugin2.4.4提供appengine:run本地运行等目标app.deploy.project属性指向libphonenumber-hrdGoogle 官方 Demo 在 App Engine 上的项目名核心依赖libphonenumber号码解析库本体、geocoder离线地理编码用于展示号码归属地描述、carrier运营商识别以及soyGoogle Closure Templates用于渲染 HTML 页面、commons-fileupload/commons-io文件上传解析、javax.servlet:servlet-apiprovided 作用域Soy 模板构建链构建过程通过exec-maven-plugin在generate-sources阶段调用SoyParseInfoGenerator生成模板 Java 类在verify阶段调用SoyToJbcSrcCompiler把.soy模板编译进WEB-INF/lib/soy-templates.jar页面渲染因此基于高性能的 SoySauce 而非解释执行的 Tofu输出目录outputDirectory直接指向target/finalName/WEB-INF/classes注释写明这是为了 Web 应用的热重载hot reload。appengine-web.xml 与 logging.propertiesappengine-web.xml 声明了应用在 App Engine 上的关键属性applicationlibphonenumber-hrd/applicationApp Engine 应用 ID即 Google 官方部署所用的项目version1/version与runtimejava17/runtime应用版本与 Java 17 运行时threadsafetrue/threadsafe应用可并发处理请求通过system-properties将java.util.logging.config.file指向WEB-INF/logging.properties。logging.properties 是默认的java.util.logging配置将全局日志级别设为WARNING避免开发服务器刷屏。如果你在排查解析异常时需要更多日志细节可以自行调低级别例如改为INFO。部署到自己的 App Engine 应用可选如果不想只在本机运行也可以把 Demo 部署到自己注册的 App Engine 应用上注册应用按 Google App Engine 标准环境的入门指引注册一个应用 ID修改配置把 appengine-web.xml 中的application换成你自己的应用 ID执行部署使用 Maven 插件部署例如mvn appengine:deploy部署目标是 App Engine Maven 插件的标准能力具体子命令可查阅插件帮助mvn help:describe -Dplugincom.google.cloud.tools:appengine-maven-plugin。此外仓库根目录下还有一份更早期的命令行教程 run-java-demo.md它基于旧的 App Engine Java SDKappengine-java-sdk与ant构建流程记录了ant jar打包库 jar、ant runserver启动本地服务器、以及用appcfg.sh update war上传应用的完整步骤。该文档所描述的war/WEB-INF/lib手工放置 jar 与appcfg.sh上传方式属于历史流程与当前 pom.xml 的 Maven 化结构不再完全一致但其中的排查思路如 JRE 版本问题仍有参考价值。常见问题与排错JRE 版本警告运行中若 App Engine 提示需要更高版本的 JRE可先执行echo $JAVA_HOME查看当前配置用update-java-alternatives -l列出已安装的 JDK再通过export JAVA_HOME[JDK 路径]切换后重试上传文件过大ResultServlet中setSizeMax(50000)将文件上传限制在 50KB批量解析大文件时会失败属于 Demo 的固有限制而非 libphonenumber 库本身的能力边界页面无日志输出默认logging.properties级别为WARNING如需查看解析过程的调试信息可在 logging.properties 中调低级别端口冲突本地启动默认监听8080参见 run-java-demo.md 中 start a server on your localhost … http://localhost:8080/ 的说明若端口被占用需先释放或调整运行配置。小结java/demo/README.md 提供了一条清晰的启动路径安装 Google Cloud SDK 的 App Engine Java 组件 → 在 IDE 中安装 Cloud Code 插件 → 由插件自动识别并运行 Demo也可以退而求其次用mvn appengine:run原生启动。结合 ResultServlet.java、WebHelper.java 与 pom.xml 等源码你可以进一步理解它背后的解析链路与构建机制。按上述步骤跑起来后这个 Demo 就是你本地最直观的 libphonenumber 行为验证工具任意号码、任意默认国家、任意展示语言输入即见解析、校验与格式化结果。赞分享后端移动开发【免费下载链接】libphonenumberGoogles common Java, C and JavaScript library for parsing, formatting, and validating international phone numbers.项目地址https://gitcode.com/GitHub_Trending/li/libphonenumber点击查看免费下载相关推荐Google libphonenumber 常见问题解析从号码解析到格式化全指南Google libphonenumber 常见问题解析从号码解析到格式化全指南 前言 Google libphonenumber 是一个强大的电话号码处理库后端移动开发ExoPlayer 官方 Demo 应用全解析从构建运行到源码级使用指南ExoPlayer 官方 Demo 应用全解析从构建运行到源码级使用指南 导读 本指南围绕 ExoPlayer 仓库中的 demos/ 目录展开系统讲解这套音视频移动开发Google libphonenumber CarrierMapper电话号码运营商映射技术终极指南Google libphonenumber CarrierMapper电话号码运营商映射技术终极指南 在现代通信系统中电话号码运营商映射技术是识别手机号码归后端上一篇CANN驱动设备类型查询API下一篇终极指南如何用颜色对比度分析器打造无障碍设计创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

防火墙源代码.zip解析:从解包到双网卡透明网关部署 2026/10/1 4:04:14

防火墙源代码.zip解析:从解包到双网卡透明网关部署

简介:基于费尔防火墙 1.0 的源代码压缩包是一份面向网络安全开发者、高校学生及防火墙技术爱好者的学习资料,旨在帮助读者从底层理解防火墙的包过滤、规则控制与异常行为处理逻辑。压缩包仅约529KB,内部包含核心源码、功能说明文档&#xff0…

阅读更多 →
AWTK Windows开发环境搭建教程:从零到运行第一个Demo 2026/10/1 4:04:08

AWTK Windows开发环境搭建教程:从零到运行第一个Demo

如果你搜到这个标题,大概率已经在用或准备评估AWTK这套跨平台GUI框架。AWTK全称Toolkit AnyWhere,是一套用C语言实现的开源GUI引擎,日常主要出现在工业控制、智能硬件、车载仪表这些领域,但从开发效率来说,最舒服的起步…

阅读更多 →
Flutter鸿蒙适配实战:MessagePack二进制序列化替代JSON的跨端通信改造 2026/10/1 4:04:08

Flutter鸿蒙适配实战:MessagePack二进制序列化替代JSON的跨端通信改造

1. 项目背景与核心问题拆解上周接到一个任务,把团队维护了两年的 Flutter 项目适配到鸿蒙 HarmonyOS 上。UI 层面、路由层面、状态管理层面都还好说,真正让人头疼的是我们内部自研的那套数据通信协议——它长年依赖 JSON 字符串在 Flutter 与原生侧之间来…

阅读更多 →
Creo参数化设计+3D打印:从模型到实物的全链路实战指南 2026/10/1 4:04:08

Creo参数化设计+3D打印:从模型到实物的全链路实战指南

1. 从Creo参数化到3D打印:为什么说这套组合拳值得All in我最早接触3D打印那会儿,用的还是网上随便下载的现成STL模型,顶多在切片软件里旋转缩放一下,根本谈不上"设计"。后来系统地啃Creo,才意识到一个问题&a…

阅读更多 →
SVM支持向量机从原理到Python实战:核函数、参数调优与工程落地 2026/10/1 4:04:08

SVM支持向量机从原理到Python实战:核函数、参数调优与工程落地

1. 为什么到现在还在学SVM:它到底解决了什么问题标题里写着“从原理到实战”,我实际跑下来发现,真正把SVM讲透又做成全流程的教程其实没那么多。很多文章要么推到数学推导就断更了,要么直接调库喊一句“RBF核效果最好”完事&#…

阅读更多 →
CPO-VMD参数自动寻优:告别变分模态分解的K与alpha玄学调参 2026/10/1 4:04:08

CPO-VMD参数自动寻优:告别变分模态分解的K与alpha玄学调参

简介:面向信号分解与参数寻优需求的 MATLAB 程序包,针对 VMD 模态数与惩罚因子难以确定的问题,基于 2024 年新提出的冠豪猪优化算法(CPO)自动寻优,以包络熵作为适应度函数,适合故障诊断、特征提…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉