java在cmd运行"-d"和"-cp"参数解读

 更新时间:2023年08月04日 09:08:52   作者:百学成瘾  
这篇文章主要介绍了java在cmd运行"-d"和"-cp"参数用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

1. “-d"和”-cp"参数的用法

“-d” 参数

javac 有一个’-d’参数,后跟一个目录路径,其指定编译的字节码(xx.class)文件放到什么目录下,特别当类定义在一个包中时,javac会在参数指定目录下产生包名子目录并将类字节码文件放入其中。

“-cp” 参数

javac 还有一个’-cp’参数,后跟一个或多个 带有分隔的 目录路径或库文件(.jar 或 .zip),其 指定import代码指令表达的字节码文件放在什么地方 (可以理解为’-cp’用来寻找import导入的或者本 身编译成功后的字节码文件),此参数可以在classpath环境变量中设置。

java 也有一个’-cp’参数,意义同javac

2. 一个java程序的编译

首先我在E盘下的my_test文件夹下建了两个Java程序,class为空文件夹

qq

Person的编译

Person.java代码如下:

//命名为   Person.java
package lib; //package说明此类(Person)在说明lib包下
public class Person{
	public static int m=10;
	 public static void main(String[] args){
	 	System.out.println("hello,this is Person");
	 }
}

一、编译字节文件到当前目录

1.编译Person.java,生成java.class到当前目录下, 运行 javac -d . Person.java (注意 '-d’后面有个 ‘空格’ 然后才有 ‘.’)

自动生成lib文件夹,并且将编译的Person.class放在lib下

编译Person.java

2.因为Person.class在当前目录下的lib文件夹中

所以运行java lib.Person 执行Person.class

输出结果 hello,this is Person

在这里插入图片描述

二、编译字节文件到当前目录的子文件夹

1.编译Person.java,生成java.class到class文件夹下

运行 javac -d ./class Person.java 在class文件夹下自动产生lib文件夹,并生成Person.class文件

在这里插入图片描述

2.运行 java -cp ./class lib.Person 输出结果

注:生成的字节码文件Person.class在文件夹class下面,所以要用 “-cp” 来找到 Person.class 注意有空格,不能忽略

在这里插入图片描述

3. 两个java程序间的调用编译

My.java 中需要调用Person的成员,为了更好的理解参数意义,我们把My.java 和 Person.java 都放在class文件夹下运行

My.java 代码如下:(调用Person中的成员)

//命名为 My.java
package longpf; //说明此类(My)在longpf包下
import lib.Person;
public class My{ 
	public static void main(String[] args){
		System.out.println(new Person().m)//调用输出Person中的成员m
	}
}

注:My在包longpf下,Person在包lib下,见代码第一行package:

编译运行My.java

在这里插入图片描述

过程如下:

1.执行 javac -d ./class Person.java ,在class文件中产生lib包

2.执行javac -cp ./class -d ./class My.java ,因为My.java中有import Person ,所以要找到Person.class,即 -cp参数,-cp ./class 到class文件夹下 .

代表当前目录,-d ./class 表示编译生成的My.class放在当前目录的class文件夹下(代码中package longpf; 自动生成longpf包),注意不能丢掉空格

在这里插入图片描述

3.执行java -cp ./class longpf.My,最后找到class下的longpf包,里面的My.class运行。

输出结果 Perosn中的m成员 10;

一定要在包longpf外用 ’ . '调用My,否则的话会显示错误,如图:

在这里插入图片描述

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java防锁屏小程序代码实例

    Java防锁屏小程序代码实例

    这篇文章主要介绍了Java防锁屏小程序代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • java实现简单控制台通讯录

    java实现简单控制台通讯录

    这篇文章主要为大家详细介绍了java实现简单控制台通讯录,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02
  • SpringBoot详细讲解异步任务如何获取HttpServletRequest

    SpringBoot详细讲解异步任务如何获取HttpServletRequest

    在使用框架日常开发中需要在controller中进行一些异步操作减少请求时间,但是发现在使用@Anysc注解后会出现Request对象无法获取的情况,本文就此情况给出完整的解决方案
    2022-04-04
  • Spring Cloud Feign性能优化代码实例

    Spring Cloud Feign性能优化代码实例

    这篇文章主要介绍了Spring Cloud Feign性能优化代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • Spring IoC和DI深度解析

    Spring IoC和DI深度解析

    Spring是包含了众多工具方法的IoC容器,本文给大家介绍Spring IoC和DI深度解析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,感兴趣的朋友跟随小编一起看看吧
    2026-02-02
  • JAVA中excel导出一对多合并具体实现

    JAVA中excel导出一对多合并具体实现

    项目中经常会使用到导出功能,有导出Word,有导出Excel的,下面这篇文章主要给大家介绍了关于JAVA中excel导出一对多合并具体实现的相关资料,需要的朋友可以参考下
    2023-09-09
  • Mybatis中兼容多数据源的databaseId(databaseIdProvider)的简单使用方法

    Mybatis中兼容多数据源的databaseId(databaseIdProvider)的简单使用方法

    本文主要介绍了Mybatis中兼容多数据源的databaseId(databaseIdProvider)的简单使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-07-07
  • SpringBoot带你实现一个点餐小程序

    SpringBoot带你实现一个点餐小程序

    有个小伙伴临时找到我,要开发一个点餐的系统,时间比较着急,给了2天的时间。马马虎虎的搞出来了,头发掉了一撮!下面介绍下本系统,感兴趣的小伙伴,可以参考开发下
    2022-07-07
  • SpringCloud实现Eureka服务注册与发现

    SpringCloud实现Eureka服务注册与发现

    这篇文章主要介绍了SpringCloud如何实现Eureka服务注册与发现,帮助大家更好的理解和学习使用SpringCloud,感兴趣的朋友可以了解下
    2021-05-05
  • Java中List与数组之间的相互转换

    Java中List与数组之间的相互转换

    在日常Java学习或项目开发中,经常会遇到需要int[]数组和List列表相互转换的场景,然而往往一时难以想到有哪些方法,最后可能会使用暴力逐个转换法,往往不是我们所满意的,下面这篇文章主要给大家介绍了关于Java中List与数组之间的相互转换,需要的朋友可以参考下
    2023-05-05

最新评论