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

您所在的位置:网站首页 javac编译命令 Linux下用命令行编译运行Java总结

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

2024-07-13 00:28| 来源: 网络整理| 查看: 265

最近使用腾讯云的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),领取编程大礼包。 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3