问题:在使用了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文件

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

-cp classes :指定所要调用的.class文件所在路径(包所在的路径)
src.a.HelloTest :源文件中所设置的package路径(即:包名.类名)

我的本地项目路径: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运行窗口编译运行的更多相关文章

  1. Java - 25 Java 包(package)

    Java 包(package) 为了更好地组织类,Java提供了包机制,用于区别类名的命名空间. 包的作用 1 把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用. 2 如同文件夹一样,包 ...

  2. Java学习笔记三十一:Java 包(package)

    Java 包(package) 一:包的作用: 如果我们在使用eclipse等工具创建Java工程的时候,经常会创建包,那么,这个包是什么呢. 为了更好地组织类,Java 提供了包机制,用于区别类名的 ...

  3. JAVA 基础开发环境 vscode 搭建 Windows下VSCode编译运行简单java

    JAVA 基础开发环境 vscode 搭建 来源 https://www.cnblogs.com/freewsf/p/7744728.html 对于使用 Visual Studio Code 的 Ja ...

  4. C#中的命名空间namespace与Java中的包package之间的区别

    Java 包被用来组织文件或公共类型以避免类型冲突.包结构可以映射到文件系统. System.Security.Cryptography.AsymmetricAlgorithm aa; 可能被替换: ...

  5. Java 包(package)详解

    为了更好地组织类,Java提供了包机制,用于区别类名的命名空间. 包的作用 1 把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用. 2 如同文件夹一样,包也采用了树形目录的存储方式.同一 ...

  6. Java 包(package)的概念及实例

    包的作用 1.把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用. 2.如同文件夹一样,包也采用了树形目录的存储方式.同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调 ...

  7. Java 包(package)

    为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间. 1.包的作用 1.把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用. 2.如同文件夹一样,包也采用了树形目录的存储方式 ...

  8. java包(package)

    为了更好地组织类,java提供了包机制,用于区别类名的命名空间. 这样在不同的命名空间就可以有相同命名的类. 1 把功能相似或相关的类或接口阻止在同一个包中,方便类的查找和使用. 2 如同文件夹一样, ...

  9. Java-Runoob-面向对象:Java 包(Package)

    ylbtech-Java-Runoob-面向对象:Java 包(Package) 1.返回顶部 1. Java 包(package) 为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间. ...

随机推荐

  1. Pythonyu语法入门01

    引子 ​ 基于上一篇所学,有了计算机硬件,再在硬件之上安装好操作系统,我们就有了一个应用程序的运行平台,我们接下来的任务就是学习如何使用某款编程语言来开发应用程序. ​ 本篇的主题是先带大家了解下编程 ...

  2. app消息推送

    Mui + 个推 实现消息推送 1.首先去个推 注册一个账号,新建一个消息推送应用 2.配置Mui配置文件 3.使用HBuilder 打包 app 4.然后在到个推后台 发送数据 后台Java代码(官 ...

  3. 机器学习笔记(一)· 感知机算法 · 原理篇

    这篇学习笔记强调几何直觉,同时也注重感知机算法内部的动机.限于篇幅,这里仅仅讨论了感知机的一般情形.损失函数的引入.工作原理.关于感知机的对偶形式和核感知机,会专门写另外一篇文章.关于感知机的实现代码 ...

  4. C语言I—2019秋作业01

    1您对软件工程专业或计算机科学与技术专业了解是什么? 工程专业将成为一个新的热门专业.软件工程专业以计算机科学与技术学科为基础,突出软件开发的工程性,使学生在掌握计算机科学与技术方面知识和技能的基础上 ...

  5. 基于SkyWalking的分布式跟踪系统 - 异常告警

    通过前面2篇文章我们搭建了SW的基础环境,监控了微服务,能了解所有服务的运行情况.但是当出现服务响应慢,接口耗时严重时我们需要立即定位到问题,这就需要我们今天的主角--监控告警,同时此篇也是SW系列的 ...

  6. 石头剪刀步(rps):dp,概率&期望

    既然已经给std了,直接扔代码啦.代码注释还是不错哒. 因为我也有点懵,不明白的或有不同见解的一定要在评论区喷我啊! #include<bits/stdc++.h> using names ...

  7. 精心整理(含图版)|你要的全拿走!(R数据分析,可视化,生信实战)

    本文首发于“生信补给站”公众号,https://mp.weixin.qq.com/s/ZEjaxDifNATeV8fO4krOIQ更多关于R语言,ggplot2绘图,生信分析的内容,敬请关注小号. 为 ...

  8. 实现 sqrt(x):二分查找法和牛顿法

    最近忙里偷闲,每天刷一道 LeetCode 的简单题保持手感,发现简单题虽然很容易 AC,但若去了解其所有的解法,也可学习到不少新的知识点,扩展知识的广度. 创作本文的思路来源于:LeetCode P ...

  9. 简单的私有DockerHub搭建

    Docker Hub 目前Docker官方维护了一个公共仓库https://hub.docker.com, 其中已经包括100000+个的镜像.大部分需求都可以通过在 Docker hub中直接下载镜 ...

  10. Pandas进阶笔记 (一) Groupby 重难点总结

    如果Pandas只是能把一些数据变成 dataframe 这样优美的格式,那么Pandas绝不会成为叱咤风云的数据分析中心组件.因为在数据分析过程中,描述数据是通过一些列的统计指标实现的,分析结果也需 ...