cmd编译运行java程序的方法

网友投稿 385 2022-08-19


cmd编译运行java程序的方法

目录0.写入程序1.编译2.运行3.将class输出到指定package4.CLASSPATH5.常见错误6.引入jar包

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.Stringoptions: 一些可选参数[可参考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

后面加上;

或者前面加上.;


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:RestTemplate的DELETE及PUT等请求方法使用精讲
下一篇:使用feign调用接口时调不到get方法的问题及解决
相关文章

 发表评论

暂时没有评论,来抢沙发吧~