关于命令行上执行java命令的错误分析 - Could not find or load main class

成功的安装了JDK和Eclipse后,在开发测试Java工程中,很少会遇到开发环境问题。

这都归功于Eclise通过工程(project)和包(package)把这些管理好。


但偶尔在命令行下编译和运行Java文件时,还会遇到如下错误:
(以下示例都是在Win7上进行)
D:\jtest> java J_Hello


调试此类问题可遵循如下步骤:
1. 检查环境变量PATH和CLASSPATH是否正确设置
2. 检查java源文件中的包名(package)是否正确


下面一些有关环境变量常用命令和注意事项。
1. 在Windows的控制台命令窗口中,通过echo和set命令查看、设置和修改和删除环境变量 (仅对命令窗口有效)
2. 通过Windows的图形界面,查看、设置和修改和删除环境变量(全局有效)
详细内容,请参考 博文


注意事项:

1. Windows对变量的大小写不区分。path,PATH和Path表示同一个变量。
2. PATH和CLASSPATH变量可包含一个列表,相邻的表项用分号(;)隔开。
    PATH=.;D:\j2sdk\bin
    CLASSPATH=.;D:\j2sdk\lib


有时java源程序中package设置不当也会导致上述错误。
1. 在java源文件开头没有包声明语句 package your_package; 
D:\jtest> javac J_Hello.java

D:\jtest> java J_Hello
Hello, the Java world!

2. 在java源文件开头有包声明语句 package your_package; 
D:\jtest>javac J_Hello1.java

D:\jtest>java J_Hello1
Error: Could not find or load main class J_Hello1

错误原因:
编译含有包声明语句的java源程序文件的格式是:
    javac -d your_path your_class.java
此命令能在 your_path/your_package/ 下生成 your_class.class。

上面的命令中没有-d选项,javac会在当前目录下生成J_Hello1.class(没有报错)。
但是执行java命令,会因为找不到class而出错。

解决方法:
1. 在当前目录下手工创建com/mypkg/test目录,将移动J_Hello1.class到该目录下。
2. 用 javac -d . J_Hello1.java 编译,将直接生成./com/mypkg/test/J_Hello1.class。 
D:\jtest>javac -d . J_Hello1.java


D:\jtest>java com.mypkg.test.J_Hello1

Hello, the Java world!


以下是实例程序:

// J_Hello.java
public class J_Hello {
    public static void main(String[] args) {
    	System.out.println("Hello, the Java world!");
    }
}

// J_Hello1.java
package com.mypkg.test; 

public class J_Hello1 {
    public static void main(String[] args) {
    	System.out.println("Hello, the Java world!");
    }
}

欢迎提出宝贵意见,共同学习提高。

尊重原创,欢迎转载,请注明出处。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值