经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Java » 查看文章
今天遇到一个开心事,在eclipse编写的代码在命令窗口中编译后无法运行,提示 “错误: 找不到或无法加载主类”
来源:cnblogs  作者:jqhx  时间:2018/11/20 14:54:00  对本文有异议

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

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

  1. package debug;
  2.  
  3. class Demo {

  

1、带package运行方法

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

  1. 1 package debug;
  2. 2
  3. 3 class HelloWorld {
  4. 4 public static void main(String[] args){
  5. 5 System.out.println("hi");
  6. 6 }
  7. 7 }

在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运行方法

  1. 1 //package debug;
  2. 2
  3. 3 class HelloWorld {
  4. 4 public static void main(String[] args){
  5. 5 System.out.println("hi");
  6. 6 }
  7. 7 }

操作步骤如下:

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,这样在命令窗口中编译和执行就不需要额外去切换目录了,可以在当前目录直接执行。

 

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号