java中带package和不带package的编译运行方式是不同的。

首先来了解一下package的概念:简单定义为,package是一个为了方便管理组织java文件的目录结构,并防止不同java文件之间发生命名冲突而存在的一个java特性。不同package中的类的名字可以相同,只是在使用时要带上package的名称加以区分

package debug;

class Demo {

  

1、带package运行方法

我的代码目录结构为:D:\WorkSpace-Java\java_excise\src\debug\HelloWorld.java

 package debug;

 class HelloWorld {
public static void main(String[] args){
System.out.println("hi");
}
}

在eclipse中运行能正常打印出内容,此时我想在命令窗口中去重新编辑并运行该文件时,即提示错误 找不到或无法加载主类

操作步骤如下:

1、win + R 调出运行窗口并输入 cmd 打开命令窗口

2、切换盘符 输入: e:  然后回车

3、进入到代码目录: cd D:\WorkSpace-Java\java_excise\src\debug

4、编译文件: javac HelloWorld.java

5、运行该文件: java HelloWorld,报错了,如下图:

原因:报这个错原因是在当前目录下,然后根据代码文件中引用的包名会在当前debug目录下再去找debug目录(这个目录肯定不存在,如果你想验证是不是这样,可以手动在当前debug目录下再新建一个debug目录,然后把HelloWorld.class文件拷过去重新运行),所以就会报找不到或者无法加载主类,那么要如何才能正常运行呢,想到了这个代码执行的流程要先找到该debug路径,那是不是我只要返回到当前debug目录的上一级目录,然后重新执行该java文件不就可以找得到debug目录了,话不多说直接上验证截图,从图中可以看到执行成功了:

2、不带package运行方法

 //package debug;

 class HelloWorld {
public static void main(String[] args){
System.out.println("hi");
}
}

操作步骤如下:

1、win + R 调出运行窗口并输入 cmd 打开命令窗口

2、切换盘符 输入: e:  然后回车

3、进入到代码目录: cd D:\WorkSpace-Java\java_excise\src\debug

4、编译文件: javac HelloWorld.java

5、运行该文件: java HelloWorld,直接就得出正确的结果了,如下截图:

 总结:

1、一般通过IDE开发的代码,在新建class文件时,会默认在文件首行产生一个 package xxx;的代码,这样的代码是可以直接在IDE进行编译并正常运行的(前提是代码无基本的语法错误),如果想要在DOS命令窗口中编译并运行的话,此时就需要将文件目录切换至代码所在目录的上一级目录,然后用 java xxx进行执行,否则会报错,简单做法为:编译文件时javac xxx.java在当前代码路径下,运行文件时需要返回到代码所在目录上一级目录执行,执行时同时要带上包名 java xx.xxx (xx代表包名,xxx代表java类名)。

2、如果是通过Notepad++创建的java文件,一般首行都不会带上package,这样在命令窗口中编译和执行就不需要额外去切换目录了,可以在当前目录直接执行。

今天遇到一件开心事,在eclipse编写的代码在命令窗口中编译后无法运行,提示 “错误: 找不到或无法加载主类”的更多相关文章

  1. Eclipse无法编译,提示错误“找不到或者无法加载主类”解决方法

    jar包问题: 1.项目的Java Build Path中的Libraries中有个jar包的Source attachment指为了一个不可用的jar包, 解决办法是:将这个不可用的jar包remo ...

  2. Eclipse 无法编译,提示“错误: 找不到或无法加载主类”

    jar包问题: 1.项目的Java Build Path中的Libraries中有个jar包的Source attachment指为了一个不可用的jar包, 解决办法是:将这个不可用的jar包remo ...

  3. eclipse springboot运行helloworld错误: 找不到或无法加载主类 xxx.xxx.xxx

    这个错误,在网上搜找了好久,说是什么jar包冲突,什么环境配置,我经过验证均是正确的,javac java java -version 都没问题,环境变量也OK,各种解释均没有能够解决我的问题,最后好 ...

  4. Eclipse 无法编译 或 提示“错误: 找不到或无法加载主类”

    project显示一个红色叹号,通常是.jar文件缺失,在下面找到配置 在libraries中添加add External JARs添加.jar文件

  5. [原创]消灭eclipse中运行启动的错误:“找不到或无法加载主类”问题

    最近一直遇到这个问题且根据网上的文章做法基本无法通过,故将自己的解决步骤记录及分享给大家. 一:环境必须要配置好. 试试在dos界面输入:java.javac 分别这两个命令是否能执行,如果都能执行恭 ...

  6. Java SE之 Eclipse错误: 找不到或无法加载主类或项目无法编译10种解决大法!【摘抄】

    声明一下:此BUG确实经常困扰我许久,今日遇到很强大的一套解决办法,又怕原博主的网页以后查找不到,故此摘抄copy一份,望得各方侵权一事而谅解. 传送门先行送上:http://blog.csdn.ne ...

  7. Eclipse错误: 找不到或无法加载主类或项目无法编译10种解决大法

    1.在src文件夹上点右键-Build Path-Use as Source Folder,重新进行编译,一切正常了.2.在Eclipse工程文件夹上点右键-Refresh,重新编译,一功OK(这个方 ...

  8. eclipse 错误: 找不到或无法加载主类

    在src文件夹上移除Source Folder,再点右键-Build Path-Use as Source Folder,重新进行编译,一切正常了.

  9. eclipse 执行main方法 错误: 找不到或无法加载主类

    检查环境变量是否正确 JAVA_HOME JAVA的实际安装目录 CLASSPATH .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\ ...

随机推荐

  1. php,vue,vue-ssr 做出来的页面有什么区别?

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由shirishiyue发表于云+社区专栏 目前我这边的web页面,都是采用php+smarty模板生成的,是一种比较早期的开发模式.好 ...

  2. js常用面试题整理

    1.array操作关键字: pop() 删除最后一个:push最后添加一个或者多个:reverse颠倒数组:shift删除第一个元素:unshift首部添加元素:concat衔接两个数组:join把数 ...

  3. 深入浅出 JVM ClassLoader

    # 前言 在 JVM 综述里面,我们说,JVM 做了三件事情,Java 程序的内存管理, Java Class 二进制字节流的加载(ClassLoader),Java 程序的执行(执行引擎).我们也说 ...

  4. 浩顺考勤机二次开发(第二版,附实测可用的demo)

    1.背景 之前写过一次浩顺考勤机的二次开发,不过那个版本还是有一些问题,后来更换了新的考勤机,又拿到了新的二次开发包,所以就有了这次这个版本 2.关于考勤机的一些说明 2.1 首先要给考勤机设定ip, ...

  5. [转]group by 后使用 rollup 子句总结

    group by 后使用 rollup 子句总结 一.如何理解group by 后带 rollup 子句所产生的效果 group by 后带 rollup 子句的功能可以理解为:先按一定的规则产生多种 ...

  6. IIS服务器SSL证书安装

    在证书控制台下载IIS版本证书,下载到本地的是一个压缩文件,解压后里面包含.pfx文件是证书文件,pfx_password.txt是证书文件的密码. 友情提示: 每次下载都会产生新密码,该密码仅匹配本 ...

  7. 秒懂AOP

    AOP(Aspect Orient Programming),作为面向对象编程的一种补充,广泛应用于处理一些具有横切性质的系统级服务,如事务管理.安全检查.缓存.对象池管理等.AOP 实现的关键就在于 ...

  8. 使用iconv进行编码gb2312转utf8 转码失败的坑

    iconv 编码gb2312转utf8 转码失败的坑 使用背景 项目中使用thrift进行C#程序调用c++接口,其中的协议是通过json进行传输的,由于默认thrift使用utf8进行传输,而C#和 ...

  9. sql script: Graphs, Trees, Hierarchies and Recursive Queries

    --------------------------------------------------------------------- -- Inside Microsoft SQL Server ...

  10. vue2.0 element-ui中el-upload的before-upload方法返回false时submit()不生效解决方法

    我要实现的功能是在上传文件之前校验是否表格中存在重复的数据,有的话,需要弹窗提示是否覆盖,确认之后继续上传,取消之后,就不再上传. 项目中用的element-ui是V1.4.3 <el-uplo ...