cmd编译运行java程序的方法
0.写入程序
public class HelloWorld { public static void main(String[] args){ System.out.println("Hello, World!"); } }
1.编译
javac HelloWorld.java -d .
- javac: java语言的编译器,使用命令行编译Java源文件,输出字节码文件.class.
- sourcefiles: java源文件的相对路径,也可以使用绝对路径。
- options: 这里使用的是-d, 即directory简写,表示输出字节码的位置,".“表示当前目录,”…“表示上级目录,”…\bin"表示在当前目录的上级目录bin,以此类推。
2.运行
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!
java HelloWorld
3.将class输出到指定package
E:\myJava\javaSrc>javac HelloWorld.java -d ..
注意存放路径是"…"即上级目录,它表示"hello"这个package的生成路径,class文件会生成在hello包中,如果hello不存在,程序将自动创建之,在桌面上的结果,实际就是一个普通目录而已:
运行
java运行程序的命令是:
E:\myJava\javaSrc>java ../hello.HelloWorld
错误:找不到或无法加载主类
结果却是提示找不到class,如果我们现在将CMD打开到hello包所在同级目录下,即"myJava"目录,运行:
E:\myJava>java hello.HelloWorldHello,World!
程序成功输出了,也就是java解释器定位到了class文件。其实,java的解释器只能找到当前路径下和CLASSPATH变量存储路径中的包,所以我必须先把CMD的路径切换到hello的同级目录下,然后再运行java hello.HelloWorld。
那么如果每次都这样执行,岂不是很麻烦?
4.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的分隔符号,如图所示:
目前已经不需要设置CLASSPATH。
因为jdk 在该目录下有两个子目录,分别是.\bin和.\jre\bin, 前者含有用于Java程序编译以及执行的程序javac和java,后者有执行程序java。对于用Eclipse,自带编译程序,因此只需要在Path中加入%JAVA_HOME%\jre\bin,Eclipse就能运行起来,因为jdk既有编译程序也能提供执行环境。(在dos窗口下执行命令时首先会在当前目录下寻找命令相应程序,如果找不到就会去path包含目录的路径中去寻找)
5.常见错误
案例二
D:\myeclipse\Workspaces\example>javac src/com/example/controller/*.java
报错src\com\example\controller\controller.java:3:
软件包 com.example.model
不存在
我们切换目录,已上文绝对路径、相对路径的知识,正确给出Java文件的路径。这时会报出错误,软件包com.xxx不存在。因为在controller.java
文件中有一个import com.example.model.model
,根据系统默认的classpath会在当前路径下找,即D:\myeclipse\Workspaces\example
,很明显这个路径下没有com文件。
解决方法,我们告诉编译器哪个目录下会有就行了,所以需要加入选项-cp xxxx 或-classpath xxxx
D:\myeclipse\Workspaces\example>javac -cp src src/com/example/controller/*.java
加上参数-cp src,告诉编译器可以去src中找,就不会有问题了。
找不到主类
6.引入jar包
特别注意的是在Linux下用冒号:进行分隔,而在Windows用分号进行分割。
// 正确 D:\myeclipse\Workspaces\example\src>javac -cp .;lib/gson-2.3.1.jar com/example/view/view.java
后面加上;
或者前面加上.;
到此这篇关于cmd编译运行java程序的方法的文章就介绍到这了,更多相关cmd编译运行java程序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
如何解决SpringBoot2.x版本对Velocity模板不支持的方案
这篇文章主要介绍了如何解决SpringBoot2.x版本对Velocity模板不支持的方案,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2018-12-12SpringBoot整合Redis及Redis工具类撰写实例
这篇文章主要介绍了SpringBoot整合Redis及Redis工具类撰写实例,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-01-01详解JDK自带javap命令反编译class文件和Jad反编译class文件(推荐使用jad)
这篇文章主要介绍了JDK自带javap命令反编译class文件和Jad反编译class文件(推荐使用jad),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2022-09-09
最新评论