cmd编译运行java程序的方法

 更新时间:2022年03月17日 10:09:10   作者:Harris-H  
本文主要介绍了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不存在,程序将自动创建之,在桌面上的结果,实际就是一个普通目录而已:

img

运行

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的分隔符号,如图所示:

img

目前已经不需要设置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程序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java基础之位运算知识总结

    Java基础之位运算知识总结

    最近接触到了java位运算,之前对位运算的了解仅仅停留在表现结果上,乘2除以2,对背后的原理并不了解,现在学习记录一下,需要的朋友可以参考下
    2021-05-05
  • Java SpringMVC数据响应超详细讲解

    Java SpringMVC数据响应超详细讲解

    Spring MVC 是 Spring 提供的一个基于 MVC 设计模式的轻量级 Web 开发框架,本质上相当于 Servlet,Spring MVC 角色划分清晰,分工明细,本章来讲解SpringMVC数据响应
    2022-04-04
  • mybatis-plus雪花算法自动生成机器id原理及源码

    mybatis-plus雪花算法自动生成机器id原理及源码

    Mybatis-Plus是一个Mybatis的增强工具,它在Mybatis的基础上做了增强,却不做改变,Mybatis-Plus是为简化开发、提高开发效率而生,但它也提供了一些很有意思的插件,比如SQL性能监控、乐观锁、执行分析等,下面一起看看mybatis-plus雪花算法自动生成机器id原理解析
    2021-06-06
  • Springboot项目中实现微信小程序登录案例(最新推荐)

    Springboot项目中实现微信小程序登录案例(最新推荐)

    文章介绍了如何通过微信开放平台的授权登录功能实现Spring Boot项目与微信小程序的微信登录,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧
    2025-02-02
  • Java使用@Autowired注解获取对象为null的几种情况及解决方法

    Java使用@Autowired注解获取对象为null的几种情况及解决方法

    这篇文章主要给大家介绍了使用@Autowired注解获取对象为null的几种情况以及 解决方法,文中有详细的代码示例讲解,具有一定的参考价值,需要的朋友可以参考下
    2023-09-09
  • 普通java项目集成kafka方式

    普通java项目集成kafka方式

    文章介绍了如何在非Spring Cloud或Spring Boot项目中配置和使用Kafka,提供了一个简单的Kafka配置读取类,可以灵活地从不同配置中读取属性,并提供默认值
    2024-11-11
  • IDEA之如何关闭/开启引用提示Usages

    IDEA之如何关闭/开启引用提示Usages

    这篇文章主要介绍了IDEA之如何关闭/开启引用提示Usages问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • Java中使用ZXing和QRCode生成二维码的示例详解

    Java中使用ZXing和QRCode生成二维码的示例详解

    生成二维码在Java中有多种方法,常用的是通过第三方库来实现,比较流行的库包括 ZXing (Zebra Crossing) 和 QRCode,本文小编就给大家介绍了Java中使用ZXing和QRCode生成二维码的示例,需要的朋友可以参考下
    2024-09-09
  • spring boot使用@Async异步注解的实现原理+源码

    spring boot使用@Async异步注解的实现原理+源码

    通常我们都是采用多线程的方式来实现上述业务功能,但spring 提供更优雅的方式来实现上述功能,就是@Async 异步注解,在方法上添加@Async,spring就会借助AOP,异步执行方法,接下来通过本文给大家介绍spring boot异步注解的相关知识,一起看看吧
    2021-06-06
  • 基于Java汇总Spock框架Mock静态资源经验

    基于Java汇总Spock框架Mock静态资源经验

    这篇文章主要介绍了基于Java汇总Spock框架Mock静态资源经验,前面讲了 Spock框架Mock对象、方法经验总结,今天分享一下Spock框架中Mock静态资源的实践经验汇总。分成静态资源和混合场景,需要的朋友可以参考一下
    2022-02-02

最新评论