java文件cmd窗口编译后,运行class文件时报找不到类的错误。

在CMD中使用bat文件运行Java编译后的class文件时遇到找不到类的错误。问题主要是由于大小写不匹配和调用方式不正确导致。解决方案包括确保调用类名与实际文件名大小写一致,并在指定路径下运行java命令,不带.class后缀。此外,注意bat文件命名避免与系统PATH冲突,且Java文件中的包声明需与实际目录结构对应。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题1:

通过bat指令运行java编译后class文件,报类找不到的错误。

C:\Users\Administrator\Desktop>
C:\Users\Administrator\Desktop>javac Hello.java

C:\Users\Administrator\Desktop>java hello

Exception in thread "main" java.lang.NoClassDefFoundError: hello (wrong name: He
llo)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClassCond(Unknown Source)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$000(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: hello.  Program will exit.

原因分析:在文件通过javac编译文件后,调用时写成了小写字母的名称:

解决:

C:\Users\Administrator\Desktop>java Hello
Hello world!!!

C:\Users\Administrator\Desktop>

注:java代码编程是严格区分大小写的,另外,在调用文件、变量等等内容时,最好保持文件原有的名称,以免出现现在这种情况。


附:bat指令调用java的class文件:


问题2:

带路径java编译时成功的,但是java显示时报错:

C:\Users\Administrator\Desktop>javac C:\Users\Administrator\Desktop\Hello.java

C:\Users\Administrator\Desktop>java C:\Users\Administrator\Desktop\Hello
Exception in thread "main" java.lang.NoClassDefFoundError: C:\Users\Administrato
r\Desktop\Hello
Caused by: java.lang.ClassNotFoundException: C:\Users\Administrator\Desktop\Hell
o
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: C:\Users\Administrator\Desktop\Hello.  Program wi
ll exit.

C:\Users\Administrator\Desktop>

分析:未分析出原因??

解决:

通过cd 到某个路径下,调用java className(不能带后缀.class)


附 :bat文件,执行代码:

::%~d0 是当前盘符;%cd%是当前盘符
set "fileName=Plus"
set "b=%cd%"
cd "%b%\\class"
java "%fileName%"
pause

说明1:java文件里的包(java脚本第一句:package com.home.lib.java;),如果没有路径的话,必须去掉。

说明2:bat文件的命名不要和系统里path里的值有相同的,不然会出一些看起来很奇怪的问题,如指令重复下发一次等等。

说明3:图片中的1、2是按键输入的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值