如何正确调用java命令运行程序?

环境准备(必需步骤)

  1. 安装JDK

    • 从Oracle官网或OpenJDK下载对应系统的JDK(推荐JDK 11+)。
    • 安装后配置环境变量:
      • Windows
        添加 JAVA_HOME = JDK安装路径(如 C:\Program Files\Java\jdk-21
        Path 中添加 %JAVA_HOME%\bin
      • Linux/macOS
        ~/.bashrc~/.zshrc 中添加:

        export JAVA_HOME=/usr/lib/jvm/jdk-21
        export PATH=$JAVA_HOME/bin:$PATH
  2. 验证安装
    终端执行:

    java -version

    输出类似 openjdk 21.0.3 2025-04-16 即表示成功。


基础调用方法

场景1:运行.class文件

  1. 编译Java源码:
    javac HelloWorld.java  # 生成 HelloWorld.class
  2. 运行程序:
    java HelloWorld        # 注意:无需加.class后缀

场景2:运行JAR包

java -jar app.jar        # 执行可执行JAR(需MANIFEST.MF指定主类)

场景3:指定主类运行

java -cp "lib/*:." com.example.Main  # Linux/macOS
java -cp "lib/*;." com.example.Main  # Windows
  • -cp:指定类路径(含依赖库和当前目录)
  • com.example.Main:完整包路径的主类名

高级参数配置

内存管理

java -Xms512m -Xmx2g -XX:MaxMetaspaceSize=256m MyApp
  • -Xms512m:初始堆内存512MB
  • -Xmx2g:最大堆内存2GB
  • -XX:MaxMetaspaceSize=256m:元空间上限

系统属性传递

java -Dconfig.path=/etc/app.conf -Ddebug=true MyApp

代码中通过 System.getProperty("config.path") 获取值。

垃圾回收调优

java -XX:+UseG1GC -XX:MaxGCPauseMillis=200 MyApp

启用G1垃圾回收器,目标暂停时间200ms。


常见问题解决

  1. java: command not found

    • 检查 JAVA_HOMEPath 配置
    • 重启终端或执行 source ~/.bashrc(Linux/macOS)
  2. NoClassDefFoundError

    • -cp 正确指定依赖路径(如JAR目录需包含所有库)
  3. Invalid or corrupt jarfile

    • 重新打包JAR:jar cfm app.jar MANIFEST.MF *.class
  4. 权限问题(Linux/macOS)

    chmod +x app.jar      # 添加可执行权限

最佳实践与安全建议

  1. 生产环境推荐

    • 使用JDK长期支持版(如JDK 17/21)
    • 通过工具(如Maven/Gradle)管理依赖和打包
    • 用Docker容器化部署避免环境差异
  2. 安全规范

    • 禁止使用-Djava.security.manager=allow绕过安全管理器
    • 敏感配置通过环境变量传递(非命令行参数)
    • 定期更新JDK修复漏洞

调试与监控

  • 启动远程调试

    java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 MyApp

    用IDE连接5005端口调试。

  • 查看JVM参数

    jps -l                  # 查看Java进程ID
    jinfo -flags <pid>      # 显示进程JVM参数

引用说明: 参考自Oracle官方文档Java Tools及《Java性能权威指南》,命令行参数以OpenJDK 21为准,不同版本可能存在差异,安全建议遵循OWASP Java安全指南。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/6218.html

(0)
酷番叔酷番叔
上一篇 2025年7月4日 18:07
下一篇 2025年7月4日 18:25

相关推荐

  • 如何直接提交Git代码到远程服务器?

    Git作为分布式版本控制工具,远程提交是连接本地开发与团队协作的核心操作,直接将本地代码变更推送到远程服务器能实现代码同步、备份和协作共享,整个过程涉及本地仓库初始化、远程仓库关联、文件暂存、提交推送等关键步骤,同时需注意认证方式、分支管理、冲突处理等细节问题,以下从基础操作到进阶技巧展开详细说明,环境准备与基……

    2025年10月24日
    15900
  • 国内数据中台软件现状如何?未来发展趋势是什么?

    2026年国内数据中台软件的核心结论是:不再单纯追求技术堆砌,而是转向“AI原生+业务闭环”的智能化架构,头部厂商如阿里云、华为云、腾讯云凭借自研大模型与行业Know-how的深度结合,占据了政务、金融及大型制造领域的绝对市场份额,选型时需重点考察其对非结构化数据的处理能力与私有化部署的合规性,市场格局演变:从……

    2026年5月27日
    6300
  • 智能交通视频监控研究,如何提升监控效果与效率?智能交通视频监控系统优化

    基于AI边缘计算与多模态大模型的实时感知系统,已取代传统被动录像,成为2026年城市交通治理中实现“毫秒级事故预警”与“动态信号优化”的关键基础设施,技术演进:从“看得见”到“看得懂”的范式转移2026年的智能交通视频监控不再局限于高清画质的采集,而是向认知智能深度跃迁,传统的视频分析依赖后端服务器集群,存在延……

    2026年6月30日
    3700
  • 负载均衡LB的优化策略与适用场景有哪些?负载均衡优化策略

    负载均衡(LB)是2026年高并发架构的流量调度中枢,通过智能分发请求实现高可用、低延迟及弹性扩容,其核心价值在于消除单点故障并优化资源利用率,负载均衡的核心机制与演进逻辑在2026年的数字化基础设施中,负载均衡已从简单的流量分发演变为具备感知能力的智能调度系统,它不再仅仅是一个反向代理服务器,而是云原生环境下……

    2026年6月14日
    3800
  • 智能金融书籍探讨其未来与挑战?智能金融书籍推荐及未来发展趋势

    智能金融书籍并非单纯的代码教程,而是融合算法逻辑、合规风控与商业洞察的实战指南,2026年最佳选择应聚焦于“大模型+垂直场景”的落地应用与监管科技(RegTech)合规体系,智能金融书籍的核心价值与选型逻辑在2026年的金融数字化转型深水区,传统金融理论已无法解释AI驱动下的市场波动,读者需要的不再是基础概念科……

    2026年6月29日
    2200

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信