使用CMD命令编译和运行Java程序

对于初学者来说,使用CMD命令(Unix以及类Unix系统采用Termial)来编译和运行Java的好处是让初学者直观地体会到编译(Compile)这一步骤,加深记忆。所谓编译就是将文本文件xxx.java翻译为Java虚拟机可以识别的字节码文件xxx.class,这部分原理暂且不做深究,直接介绍如何使用CMD命令执行Java程序。Unix/Linux或者Mac iOS等其它类Unix系统,方法都一样,涉及到的一些操作CLASSPATH的命令与Windows系统不同,就此不再赘述。

写一个Hello World程序

1 public class HelloWorld {
2     public static void main(String[] args){
3         System.out.println("Hello, World!");
4     }
5 }

因为规定java文本文件名称,必须与文件中public的类名相同,所以,我保存上述代码文件名为HelloWorld.java,储存在如下目录:

1.编译

E:\myJava\javaSrc>javac HelloWorld.java -d .

命令解析:

完整命令: javac [ options ] [ sourcefiles ] [ classes] [ @argfiles ]

  • javac: java语言的编译器,使用命令行编译Java源文件,输出字节码文件.class.
  • sourcefiles: java源文件的相对路径。
  • options: 这里使用的是-d, 即directory简写,表示输出字节码的位置,"."表示当前目录,".."表示上级目录,"..\bin"表示在当前目录的兄弟目录bin,以此类推。

所以HelloWorld.java编译完成后在当前目录输出了字节吗文件HelloWorld.class.

2.运行

E:\myJava\javaSrc>java HelloWorld
Hello, World!

java运行程序的命令是:

java [options] classname [args]

  • java: 执行程序命令。执行顺序是启动JRE->加载class->调用class的main()方法,main方法必须是public static void main(String[] args)的样子。
  • classname: 要执行的class文件的名称,要加包名,中间以‘.‘隔开,比如java.lang.String
  • options: 一些可选参数[可参考Java文档]

成功打印出字符串: Hello, World!

将class输出到指定package

package简言之就是存放Java字节码文件的包,jar文件就是存放package的包,这样区分文件结构,使项目的层次更分明,便于维护,注意要在类声明上方声明package:

1 package hello;     //声明package
2
3 public class HelloWorld {
4     public static void main(String[] args){
5         System.out.println("Hello, World!");
6     }
7 }

1.编译

E:\myJava\javaSrc>javac HelloWorld.java -d ..

注意存放路径是".."即上级目录,它表示"hello"这个package的生成路径,class文件会生成在hello包中,如果hello不存在,程序将自动创建之,在桌面上的结果,实际就是一个普通目录而已:

2.运行

java运行程序的命令是:

E:\myJava\javaSrc>java ../hello.HelloWorld
错误:找不到或无法加载主类

结果却是提示找不到class,如果我们现在将CMD打开到hello包所在同级目录下,即"myJava"目录,运行:

E:\myJava>java hello.HelloWorld
Hello,World!

 程序成功输出了,也就是java解释器定位到了class文件。其实,java的解释器只能找到当前路径下和CLASSPATH变量存储路径中的包,所以我必须先把CMD的路径切换到hello的同级目录下,然后再运行java hello.HelloWorld。

那么如果每次都这样执行,岂不是很麻烦?

CLASSPATH

 "The class path is the path that the Java Runtime Environment (JRE) searches for classes and other resource files."----官方文档, 即CLASSPATH就是JRE寻找class文件和其它资源文件的地方,因此,为了方便运行,就有必要把我们生成的包想办法放到CLASSPATH变量中,WIn7环境下的操作方法         是:

  右击“计算机”->属性->高级系统设置->环境变量->系统变量, 双击“CLASSPATH”, 在“变量值”最后输入";路径",其中";"是多个CLASSPATH的分隔符号,如图所示:

      

 好了,设置完成后,重新打开CMD,在任何位置输入命令:

C:\Windows>java hello.HelloWorld
Hello,World!

都可以成功运行啦!

当然,java命令中亦可以显式地使用-classpath参数告诉JRE去哪里找,不过这种方式的作用域是一次命令,也可以用命令行

  set classpath = %classpath%;dir        //dir是你需要设置的绝对路径

在本CMD窗口打开的期间生效一个临时的CLASSPATH,其它的CMD窗口不生效(Linux 使用#export PATH=$PATH:dir )。你可以使用

  set classpath

来查看当前生效的CLASSPATH中有没有你设置的路径(Linux使用echo $classpath查看)。

总结

  • 启动一个Java应用程序,需要经过编译和运行两个过程;
  • 编译就是将程序员编写的Java源文件翻译为Java虚拟机可执行的字节码文件;
  • 运行字节码文件的前提是虚拟机通过JRE的环境变量CLASSPATH找到这些文件;
  • 可以设置CLASSPATH变量来将你的目录加入到环境变量中以使JRE能找到字节码文件;
  • 找到文件后虚拟机将会加载字节码文件以运行。

  不积跬步,无以至千里,不积小流,无以成江海。运行一个Java程序看似就是一小步,实际上其中包含有复杂的过程和逻辑,这些技术细节,需要在积累一定的实践经验和知识的基础上,再继续深究。

原文地址:https://www.cnblogs.com/yxlaisj/p/8594444.html

时间: 2024-10-13 02:13:12

使用CMD命令编译和运行Java程序的相关文章

cmd中编译和运行java程序

[cmd下编译] 方法一: 1.首先在工程文件夹下面新建一个sourcelist.txt,把所有要编译的java类的绝对路径写进去,每写一个换一行 javac -classpath lib/jxl.jar -sourcepath src @sourcelist.txt -d bin javac -sourcepath src @sourcelist.txt -d class2(没有三方包的情况,我在项目根目录下新建了一个class2文件夹存放编译成功后的.class文件) -d选项就是desti

命令行中编译和运行JAVA程序出现“错误: 找不到或无法加载主类”

初学JAVA,今天在命令行界面中尝试编译和运行Hello.java (文件当前目录.....\src\chapter1) 1 package chapter1; 2 3 public class Hello { 4 public static void main(String[] args){ 5 if(args.length==0) 6 System.out.println("hello!"); 7 else{ 8 for(int i=0;i<args.length;i++)

cmd中传递参数运行java程序

1. java主函数 public static void main(String [] args) { } 这里面的args是什么. 这就是程序启动时的初始参数.你可以在启动时传入. 如:java MyClass abc 123 这时 args[0] == "abc"  args[1] == "123" 2. java测试代码   package order; public class TestMain {       public static void mai

如何让编译和运行Java变得“自动化”

建立批处理文件 在桌面上新建一个txt文件 重命名为Javabat.txt(注意不要和已有的命令名相同,如不允许给批处理文件命名为Java.bat因为此时Windows不知道到底调用Java.exe还是Java.bat) 在批处理文件中添加命令 Dos常见命令(大小写无所谓) Rem 用于注释,便于入门阅读批处理文件的作用 举例: Rem 本批处理文件仅用于编译和运行Java程序,请勿作它用(此时rem 后面的文本不会被当做命令来执行,直接跳过,仅仅用于阅读) :: 同样是注释命令,其后的文本仅

Java 命令行运行java程序,出现“找不到或无法加载主类 ”的注意事项

引用:http://blog.chinaunix.net/uid-27106528-id-5209914.html 要在CMD命令行中使用java 运行java程序,关于出现 “找不到或无法加载主类 ”错误的解决办法,   网络上基本都是在说关于"classpath"路径的配置问题,要加入 ” .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;“    前面加入”.;",表面要在当前目录下面寻找类.       如果你试过了

在命令符模式下编译并执行Java程序

对于Java初学者,建议使用纯文本文件来编写Java程序,并在命令符模式下使用工具程序编译和执行Java程序.使用javac工具编译.java,使用java工具执行.class.(推荐sublime编辑器) 怎么在命令符模式下编译并执行Java程序?弄了好久查了不少资料终于解决.记录下来,便于总结.分享.查阅. 首先根据自己计算机的操作系统下载和安装sun公司的JDK,http://www.oracle.com/technetwork/cn/java /javase/downloads/inde

关于cmd下运行java程序遇到的小问题

关于JDK和JRE: JDK全称是Java Development Kit,是java语言的软件开发工具包,它包含了java的运行环境和开发工具. JRE全称是Java Runtime Environment,即java运行环境.也就是说JRE是包含在JDK里面的. 如果你只安装了jre,那么你只能运行已经编译好的字节码文件,即.class文件.如果是java源文件的话,就需要安装jdk,利用jdk中的javac将.java文件编译成.class字节码文件,然后利用java.exe解释编译好的.

【Java】【转】在命令行中编译和运行java

原文:http://blog.csdn.net/u010900574/article/details/50792353 同时加载编译多个jar包和java文件 在个人平常使用或者当我们把代码部署到Linux服务器上的时候,我们经常需要通过命令行编译和运行Java文件,网上关于这个的方法大多是通过 javac -cp filePath/jarName.jar javaName.java 这种方法.但是加入在filepath文件夹下面有好几个jar包,在src文件夹中有好几个java文件的时候,这个

java和javac编译运行java程序

目录 目录 前言 编译命令介绍 javac java 代码编译与运行 java类发现规则 分离class和java文件 参考链接 前言 给自己定了一个月学习JVM虚拟机的计划,不管有没有卵用,学点新东西总是好的. 但是在学习过程中,我想在命令行测试一些JVM参数的时候,发现自己脱离了IDE,竟然无法直接编译java程序!! 我的原则不能抱怨太多,像个Loser,不会的就花时间补回来. 下面,主要是总结一些如何在命令行中编译java程序.主要是想记录总结一下java的类发现原则. 编译命令介绍 其