JAVA代码在命令行下的编译
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA代码在命令行下的编译相关的知识,希望对你有一定的参考价值。
目的
跟C++一样,JAVA可以通过命令行直接编译得到字节码文件,并且使用java命令运行。通过JAVA的编译和运行命令只是熟悉一下JAVA的一些特征,包括包和目录,classpath,jar格式;而且在调试小程序的时候其实用命令行是足够的。
但是在进行大型项目的时候还是要用较大的IDE,例如eclipse和NetBeans,显然eclipse是比NetBeans要复杂得多的,这里不说。
主要过程是:
- javac编译产生class
- java 运行class文件
- 如果你想用jar文件,那就在2的时候产生jar文件,然后用java -jar 执行它
编译
JAVA的编译和运行需要一个环境变量,以下先讲windows下的命令。 classpath是环境变量,你要运行命令: javac Hello.java的时候是默认的调用了windows的classpath变量的,这个变量代表的目录下面有标准的包;所以如果有不标准的包,就要指出它的完整路径(包括包的名字):
javac -cp .../javax.mail.jar Hello.java
java -classpath .../javax.mail.jar Hello.java
- -cp在windows下跟-classpath等价
- ...代表任意目录
- 在-cp后的目录可以有多个,用分号";"分隔,而且点号表示当前目录
运行
java可以运行class文件也可以运行jar文件,但是运行java时: java Hello.class 错误,而java Hello正确, 这只是一个规范,没有特别的含义,而且也不会跟目录结构名混淆;
常见错误提示
cannot find or load the main class:基本都是因为没有搞对类的位置的;可以这样java -cp . Hello; 也可以设置好环境变量classpath;
你可能会犯一种错: 如果Hello.java 第一行是:package mail; 你就会产生一个mail目录,目录下是Hello.class,这可能不是你输入java Hello时预料的;把package这一行去掉就好咯。
另外,虽然DOS是大小写不敏感的,但是在java执行命令的时候它是敏感的,所以不要把Hello写成hello;
ubuntu的区别
路径跟windows写法不一样,分号->冒号;没有cp这个缩写.
参考资料
www.stackoverflow.com
《JAVA核心技术》
以上是关于JAVA代码在命令行下的编译的主要内容,如果未能解决你的问题,请参考以下文章
在做java开发时,build和compile有啥联系和区别?谢谢。
ubuntu命令行下java工程编辑与算法(第四版)环境配置