java 含有package cmd_Java包package之间调用问题-cmd运行窗口编译运行

本文探讨了在Java中使用包(package)机制时遇到的编译和运行问题,详细介绍了如何在CMD中正确编译和运行含有package的Java程序。关键点在于理解路径设置,包括指定编译后的class文件路径和运行时的类路径。通过`javac -d`和`java -cp`指令,可以避免找不到或无法加载主类的错误。同时强调了package语句在源文件中的位置和作用,以及使用包来组织类的重要性。
摘要由CSDN通过智能技术生成

问题:在使用了java包机制(package)后,编译出现错误:找不到或无法加载主类 xxx 的错误提示信息(各种编译不通过)

先给演示结果:

编译:javac -d classes src/a/HelloTest.java

-d classes :指定存放class文件的路径

src/a/HelloTest.java :在项目路径:D:\javacode\Hello的基础上指定源文件的路径

此时D:\javacode\Hello\classes路径下已经按照package路径结构生成了class文件

d0c4ce9d1086136a188288f092b0657f.png

运行:java -cp classes src.a.HelloTest

-cp classes :指定所要调用的.class文件所在路径(包所在的路径)

src.a.HelloTest :源文件中所设置的package路径(即:包名.类名)

00d5d53f3a972d7966ddcf645fc4c7d9.png

我的本地项目路径:D:\javacode\Hello

源文件HelloTest路径:D:\javacode\Hello\src\a\HelloTest.java

源文件Hello路径:D:\javacode\Hello\src\a\b\Hello.java

注意:Java的package机制非常强调路径,所以路径值指定搞清楚了就不会出问题(可能会有很多人会告诉你是CLASSPATH环境变量配置问题,然而它也只是起一个指定路径的作用,告诉java虚拟机你的class文件所在路径然后执行;所以你自己指定是一样的,没有关系。)

自我认识

Java的package机制的使用关键在于对路径的设置容易出错;

先了解Java编译运行过程

源文件.java--使用javac编译-->字节码文件.class--使用java解释执行-->特定平台的机器码

包(package)机制:

为解决众多的类库出现类重名的问题Java引入了package机制,提供了类的多层命名空间(类似Windows中的文件夹),将一组功能相关的类放在同一个package下,从而组成逻辑上的类库单元;

使用规则:

1.package语句必须为源文件的第一条语句(注释除外);

2.一个源文件中只能有一条package语句;

结论:

在源文件有package语句时,无论是编译还是运行首先要确定自己作为调用者所在的路径,即cmd窗口所显示的路径(cd指令转换路径),然后以这个路径为基础设置源文件或者class文件的路径(问过一些网友和搜索一些结果,大部分回复什么CLASSPATH环境变量配置,但并不是这样,环境配置终究也是指定class文件的存储目录,方便java命令能直接找到,和我们指定一样,所以环境变量不是关键,要自己理解路径之间的结构关系);

补充:cmd相关指令:../ 匹配上一层目录(../../为上两层);* 匹配文件名(如目录下有Hello和HlloTest两个源文件 编译javac Hello*.java会自动匹配到HelloTest);. 表示当前路径

标签:路径,java,package,cmd,class,源文件,Java,Hello

来源: https://www.cnblogs.com/csyh/p/11966058.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值