Linux下用命令行编译运行Java总结

2023-11-20

最近使用腾讯云的Cloud Studio写Java,只能使用命令行进行编译运行,趁此机会,学习一下Linux的一些常用命令。平时windows下IDE用习惯了,现在用命令行进行编译运行,发现其实问题还是挺多的,所以写下这篇文章。


1.javac命令行

javac用于编译java源文件,生成.class文件。形式如下

javac [option] source

常用的option选项有如下

-classpath <路径>(可以简写成 -cp):指定要使用的类路径或要使用的jar包的路径。

-d <路径>:指定源文件编译后生成的.class文件的存放位置。


2.java命令行

java用于运行生成的.class文件。形式如下

java [option] classname [arguments]

常用的option选项有如下

-classpath <路径>(可以简写成 -cp):指定要使用的类路径或要使用的jar包的路径。

[arguments]:传递给main函数的参数。


3.编译运行一个单独的Java文件

在test文件夹下有一个Test.java文件,结构如下
这里写图片描述
Test.java代码如下

public class Test { 
    public static void main(String[] args) { 
        System.out.println("Hello World!"); 
    }
}

(1)编译生成的.class文件在当前文件夹下

// 编译
javac Test.java
// 运行
java Test
// 输出
Hello World!

(2)也可以指定编译生成的.class文件的路径,比如生成在当前文件夹下的bin文件夹下

// 编译
javac -d ./bin Test.java
// 运行
java -cp ./bin Test
// 输出
Hello World!

当指定生成的目录后,运行时也得指定相应的目录,不然会找不到文件。
这里写图片描述


4.编译运行一个带包的java文件

这里写图片描述
Test.java代码如下

package com.codeliu;
public class Test { 
    public static void main(String[] args) { 
        System.out.println("Hello World!"); 
    } 
}

(1)编译生成的.class文件在当前文件夹下

// 首先得进入到.java文件所在的文件加下,再进行编译
javac Test.java
// 退出到最外层包,再运行,否则找不到文件
java com.codeliu.Test
// 输出
Hello World!

对于在包下的文件,如果编译后直接运行,会找不到文件,必须得退出到最外层包,然后使用完整的包名+文件名进行运行。
这里写图片描述
(2)指定.class文件的生成路径,使用IDE自动编译的时候,我们可以看到源文件一般在src文件夹下,而.class文件在bin文件夹下,这是因为JVM指定了.class文件的路径。

// 编译,生成在与最外层包同级的bin文件夹下,首先退出到最外层包
javac -d ./bin com/codeliu/*
// 运行(windows中把:改成;),-cp表示告诉jvm去该路径下寻找文件
java -cp bin: com.codeliu.Test
// 输出
Hello World!

这里写图片描述


5.同一个包下,一个类调用另一个类

这里写图片描述
在同一个包下有Test01.java和Test02.java,代码如下

package com.codeliu;
public class Test01 { 
    public void print() { 
        System.out.println("I'm Test01"); 
    }
}
package com.codeliu;
public class Test02 { 
    public static void main(String[] args) { 
        Test01 t = new Test01(); t.print(); 
    }
}

因为Test02引用了Test01,所以我们得先编译Test01,再编译Test02。

// 编译Test01.java,生成的.class文件在当前文件夹下,首先得进入到文件所在的文件夹下,然后进行编译
javac Test01.java
// 退出到包的最外层,然后编译Test02.java
javac -cp . com/codeliu/Test02.java
// 运行Test02.java
java com.codeliu.Test02
// 输出
I'm Test01

编译Test02的时候,我们使用-cp告诉编译器在当前路径下(.)去寻找Test01.class。

当然,我们也可以指定.class生成的路径,使用-d即可。
这里写图片描述


6.一个包中的类调用另一个包中的类

文件目录结构如下
这里写图片描述
在package1包下有类Test01.java,package2包下有Test02.java。代码分别如下

package com.package1;
public class Test01 { 
    public void print() { 
        System.out.println("I'm Test01"); 
    }
}
package com.package2;
import com.package1.Test01;
public class Test02 { 
    public static void main(String[] args) { 
        Test01 t = new Test01(); 
        t.print(); 
    }
}

还是同样,得先编译Test01.java。

// 编译Test01.java,指定生成的路径是test文件夹下的bin文件夹下
javac -d ./bin com/package1/*
// 编译Test02.java,-cp告诉编译器去当前文件夹下的bin文件夹下找Test01.class,-d指定生成的路径
javac -cp bin: -d ./bin com/package2/*
// 运行Test02
java -cp bin: com.package2.Test02
// 输出
I'm Test01

这里写图片描述


7.运行一个工程

我们平时的项目肯定不可能是这么简单的,肯定有好多包和以及jar包,这样的情况下,我们使用shell脚本去编译它们。

等下吃完饭举个栗子。


温饱思淫欲,吃饱了我就不想写了。暂时先不写了,俺得学习其他的知识了。

个人网站https://www.codeliu.com,欢迎各位志同道合的盆友!

关注微信公众号:秃头哥编程(ID:xp_1311664842),领取编程大礼包。
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux下用命令行编译运行Java总结 的相关文章

随机推荐

  • mysql SHOW命令

    文章目录 mysql SHOW命令 概述 SHOW命令 sql脚本 mysql SHOW命令 数据库 表 列 用户 权限等的信息被存储在数据库和表中 MySQL使用MySQL来存储这些信息 可用MySQL的SHOW命令来显示这些信息 MyS
  • 使用 ChatGPT 从 JavaScript 代码生成 React 组件

    欢迎来到我们的教程 了解如何使用 ChatGPT 从 JavaScript 代码生成 React 组件 在本指南中 我们将探讨使用 ChatGPT 完成此任务的好处 并引导您完成分步过程 React 是一个流行的用于构建用户界面的 Java
  • python3.6+wamp配置python脚本环境(Windows)

    最近学到ajax 教程里需要用到wamp 这里就不介绍wamp了 wamp包含了apache服务器 但其默认只支持php脚本 而本人没学过php 所以希望降低学习成本 于是动手修改apache配置文件 网上有很多修改的教程 但我尝试了很多种
  • 5. handle方法详解-handler获取

    文章目录 1 概览 2 handle方法回顾 3 HandlerMappings继承关系 4 getHandlerInternal 4 1 RequestMappingInfoHandlerMapping getHandlerInterna
  • 包管理

    8 包管理 8 1 Go Modules是什么 Go语言通过包管理来封装模块和复用代码 这里我们只介绍Go Modules管理方法 Go Modules于Go语言1 11版本时引入 在1 12版本正式支持 是由Go语言官方提供的包管理解决方
  • VC从系统进程中查找并杀掉指定进程

    写程序的时候 有时候会调用别 别人写的 的程序的EXE 有的时候还会隐藏这个EXE 但是由于你的程序退出时并没有关闭这个EXE 只是隐藏了 所以在系统的进程查看窗口里面还是会看到的 这样当你下次再执行你自己的程序 还要调用这个程序的时候就会
  • [转载]解决PPPOE宽带拨号经常掉线的一种方法(适合刷了第三方固件的无线路由)

    文章作者 姜南 Slyar 文章来源 Slyar Home www slyar com 转载请注明 谢谢合作 最近在进行下载或看视频等大量占用网络带宽的行为时 宽带PPPOE连接非常不稳定 经常自动掉线 严重影响我的下载进程和看视频的乐趣
  • MariaDB数据库的主从配置

    1 前置工作 首先准备两台可以互相ping通的机器 两台机器可以互为主从 示例 10 210 23 77主服务器 10 20 84 183从服务器 2 安装 在两台机器上各自安装数据 解压MariaDB安装包 tar zxvf MariaD
  • 基于深度学习的无人机在室内走廊环境中的视觉导航

    与激光雷达和雷达不同 使用单目摄像头作为无人机传感器的优势之一是它能够检测各种视觉特征 例如颜色 纹理和形状 这种适应性使其能够在各种室内和室外环境中表现良好 将单目摄像头用于无人机的另一个好处是 它允许更轻巧和灵活的设计 该摄像机不需要额
  • 5 个免费的受欢迎的 SQLite 管理工具

    SQLite Expert Personal Edition SQLite Expert 提供两个版本 分别是个人版和专业版 其中个人版是免费的 提供了大多数基本的管理功能 SQLite Expert 可以让用户管理 SQLite3 数据库
  • 区块链中的哈希算法

    区块链中的密码学 密码学在区块链中的应用主要有两个 哈希算法与非对称加密算法 这次主要对哈希算法进行详细的说明 哈希算法 哈希算法的特点有 1 输入可以为任意大小的字符串 2 产生固定大小的输出 3 可以在合理的时间内算出输出值 若要满足密
  • input框限制输入40个字符_input标签的 maxlength 属性(HTML限制最大输入字数)

    实例 下面这个 HTML 表单带有最大长度分别是 85 和 55 个字符的两个输入字段 Name Email 亲自试一试 定义和用法 maxlength 属性规定输入字段的最大长度 以字符个数计 maxlength 属性与 或 配合使用 语
  • centos 修改时间

    文章目录 centos 修改时间 1 查询时间常用命令 2 修改时区 3 修改时间 3 1 手动修改时间 3 2 联网修改时间 centos 修改时间 Centos系统时间分为系统时间和硬件时间 二者必须都修改 重启系统才会永久生效 背景
  • 深入分析linux内核的内存分配函数devm_kzalloc

    在分析驱动代码的时候 经常会遇到使用devm kzalloc 为一个设备分配一片内存的情况 devm kzalloc 是内核用来分配内存的函数 同样可以分配内存的内核函数还有devm kmalloc kzalloc kmalloc 它们之间
  • Android简单的反编译嵌入例子

    简单的反编译嵌入例子 1 创建一个源工程 2 创建一个转接类 如Ed Sdk java 3 在转接类里面建立一个空方法A 方法A需要被调用 4 创建一个库工程 2 创建一个库转接类 如Ed Sdk java 类名方法名变量名完全相同 6 在
  • Java和Scala中泛型类的继承

    Java和Scala中泛型类的继承 1 泛型的学习 2 泛型类的继承 1 泛型的学习 参考 Java编程的逻辑一书 马骏昌编写的 对泛型的讲解很详细 这里着重补充一下关于泛型类的继承 2 泛型类的继承 这里主要有三种情况 存在父类 clas
  • 利用TBDBitmapData对象查找两张图片上的不同

    利用TBDBitmapData对象查找两张图片上的不同 从右上角开始利用双层循环遍历两图上的所有象素点 并相互比较 不完整代码如下 procedure TForm1 Button5Click Sender TObject var Bmp1
  • [人工智能-深度学习-53]:循环神经网络 - LSTM长短记忆时序模型的简化:门控循环网络GRU模型

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 121599096 目录 第1章 前序知
  • HTML开始历程Day01

    1 HTML 其实就是网页基本结构 CSS 功能 美化网页 不让网页太单调 JS 功能 能让网页动起来 产生很多的交互行为 HTML是什么 Hyper Text Markup Language 超文本标记语言 服务器端口号 路径位置 HTM
  • Linux下用命令行编译运行Java总结

    最近使用腾讯云的Cloud Studio写Java 只能使用命令行进行编译运行 趁此机会 学习一下Linux的一些常用命令 平时windows下IDE用习惯了 现在用命令行进行编译运行 发现其实问题还是挺多的 所以写下这篇文章 1 java