Java初学者 -- 错误: 找不到或无法加载主类

写了一个小程序,Javac命令能通过,但在执行Java时却出现错误:

该是在运行阶段出现的问题,是为路径不正确导致,在Java中路径不正确通常有如下几个情况:

一. 环境变量配置不当

可能是classpath路径配置错误,而导致.class文件无法加载。那么此时你可以检查是否配置好classpath路径,一般来说classpath路径配置如下:

.;%java_home%\lib;%java_home%\lib\tools.jar; (注意前面的 . 以及 ; 缺一不可)

其中.表示当前路径,;表示分隔符。

二. 包路径导致

当环境变量配置正确,该问题仍然存在,则应考虑该问题是否由包的引用引起的,如下为我出错的测试代码段:

package object;

// 成员变量 & 局部变量测试


public class VariableTest {
	
	//成员变量
	public static String staticname = "类属性";
	public String nostaticname = "实例属性";
	
	//未初始化成员变量
	public static String staticname1;
	public String nostaticname1;
	
	//定义一个方法
	public void info(){
		//方法中定义的变量是局部变量
		
		/*--- Test 1.1 ---*/
		// 测试未初始化直接输出局部变量
	
		//int i;
		//System.out.println(i);
		
		//测试结果:编译出错,上述语句块编译时出现如下提示:
		
		//VariableTest.java:21: 错误: 可能尚未初始化变量i
        //        System.out.println(i);
        //                           ^
		
		/*--- Test 1.2 ---*/
		// 测试初始化局部变量并输出
		
		int i = 10;
		System.out.println(i);
		
		//测试结果:编译通过
		
		/*---- 结论: 局部变量一定要初始化后才能使用 ----*/
	}
	
	//定义一个静态方法
	public static void infos(){
		int i = 20;
		System.out.println(i);
	}
	
	public static void main(String[] args){
		/* 第一问:类属性和实例属性的范围一样吗?*/
		//在没创建实例之前,可以调用类属性,但不能调用实例属性
		//System.out.println(VariableTest.staticname); 
		//结果:类属性,可编译通过,但没实例化,运行时出错
		
		//实例化对象
		VariableTest vt = new VariableTest();
		System.out.println(vt.staticname);
		
	}
}	

在代码中,我使用了包,解决方法如下:

1.去掉 ”package object;“ 重新用javac 编译VariableTest.java,再运行java VariableTest就可以了。

2.将VariableTest.java放在object文件夹下,然后在object文件夹的平级下,打开DOS命令窗口,运行javac object/VariableTest.java编译程序,运行java object/VariableTest(或者java object.VariableTest也可以),则可以运行含有包名的java程序。

注意:包名不要含有'.'(点),' '(空格)等特殊符号,这样的话命令行无法判断包名与java程序名的分割点在哪里,

从而还是找不到或者无法加载主类。

原理说明:

java程序运行class文件,对于有包名的类,java把包名当成文件夹处理."包名+类名"相当于"文件夹目录+类名"来寻找类。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值