从CMD窗口运行Java程序出现的程序包XXX不存在、找不到或无法加载主类XXX问题详解

从CMD窗口运行Java程序出现的程序包XXX不存在、找不到或无法加载主类XXX问题详解

Java源文件所在目录

文件一:E:\com\test\Test.java

package com.test;

import com.packageaccess.*;

public class Test {
    public static void main(String[] args) {
		PackageAccess PA = new PackageAccess();
    }
}

文件二:E:\com\packageaccess

package com.packageaccess;

public class PackageAccess {
		public PackageAccess(){
			System.out.println("This is com.packageaccess.PackageAccess Class!");
		}
}

在这里插入图片描述

问题一:程序包XXX不存在

在test目录下通过cmd命令窗口编译Test.java文件复现该问题,如图:
在这里插入图片描述
解决办法:在com目录的父目录中通过cmd窗口执行javac com\test\Test.java,如图:
在这里插入图片描述

问题二:找不到或无法加载主类XXX

在test目录下通过cmd命令窗口编译Test.java文件复现该问题,如图:
在这里插入图片描述
解决办法:在com目录的父目录中通过cmd窗口执行java com.test.Test,如图:
在这里插入图片描述

问题分析

Java中完整的类名应该是包名+类名,本文中的两个Java源程序的包的公共路径都为com,当我们在test目录下编译Test.java文件时,虚拟机会认为我们Test.java文件的位置为:test\com\test\Test.java,然后以此去查找com.packageaccess包,当然查找失败!

同理,当我们在test目录下通过java命令运行Test时,虚拟机默认在test\com\test下去查找Test.class文件,当然查找不到!

此问题的原因可归结到环境变量CPASSPATH的设置上,在CLASSPATH中,“.”表示当前目录。
在这里插入图片描述
Java解释器的运行过程:首先,找出环境变量CLASSPATH(可以通过操作系统来设置)。CLASSPATH包含一个或多个目录,用作查找.class文件的根目录。从根目录开始,解释器获取包名称并将每个句点替换成反斜杠,以从CLASSPATH根中产生一个路径(例如,package com.test就变成为com\test或com/test或其他,这将取决于操作系统)。得到的路径会与CLASSPATH中的各个不同的根目录路径相连接以获得一个完整的目录路径,解释器就在这些目录中查找与你所需要的类名称相同的.class文件(此外,解释器还会去查找某些涉及Java解释器所在位置的标准目录)。所以在这里Java寻找的就是CLASSPATH+package名。

参考链接:
https://blog.csdn.net/ncc1995/article/details/84932759
https://blog.csdn.net/weixin_45655555/article/details/106469076

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 这个问题应该是关于在命令行中运行JAR包时出现主类到或无法加载的错误。可能是JAR包中未添加Manifest文件或Manifest文件中未正确指定主类,也可能是JAR包的路径设置有误。需要检查JAR包是否正确生成,并且在命令行中运行时指定正确的JAR包路径和主类名。 ### 回答2: cmd方式运行jar包提示不到无法加载主类,这种情况一般是由于以下几个原因: 1. jar包路径错误 如果jar包路径错误,CMD自然会在不到包的情况下报错。因此,我们需要确保JAR包的路径是正确的。如果JAR包在桌面上,那么我们可以在CMD中输入cd /users/用户名/desktop,然后输入java -jar jar包名命令。这样应该就可以正常运行了。 2. 主类路径错误 有时候,由于代码中的错误导致JAR包无法加载主类,从而导致运行失败。解决这个问题的方法是,检查代码中的问题,或者在CMD中指定正确的主类路径。如果是多个类,那么应该根据类路径传递参数进行调用。例如,如果主类所在的包是com.example,那么我们可以在CMD中使用java -cp jar包路径 com.example.Main来调用主类。 3. 缺少必要的依赖项 如果JAR包中缺少必要的依赖项,那么程序无法正常运行。在这种情况下,我们应该确保所有依赖项都已经添加到JAR包中,并且在程序中正确地使用它们。 4. Java路径错误 在Windows环境中,CMD可能无法Java路径。这种情况下,我们应该确保Java已经正确安装,并且Java路径已经添加到系统路径中。 总之,在CMD方式下运行JAR包时,如果出现不到无法加载主类的情况,我们应该仔细检查以上几点,并逐一排除原因,从而保证程序的正常运行。 ### 回答3: 在cmd方式运行jar包时,如果提示不到无法加载主类,通常有以下几个可能的原因: 1. jar包路径错误:在cmd命令行中使用java -jar命令启动jar包时,要确保命令行所在的路径与jar包所在路径一致,否则会提示不到无法加载主类。 2. jar包名称或路径含有中文或空格:如果jar包文件名或路径中含有中文或空格等特殊字符,可能会导致cmd命令行无法识别,从而无法启动jar包。 3. jar包的MANIFEST.MF文件未正确配置:在jar包的META-INF文件夹下,有一个名为MANIFEST.MF的文件,其中包含了jar包的主类信息和其他配置信息。如果该文件未正确配置,则在cmd方式启动时会提示不到无法加载主类。 4. jar包未包含主类信息:在jar包中必须包含一个可执行的主类,否则无法通过java -jar命令启动。如果主类信息未正确配置或未包含在jar包中,会导致无法启动jar包。 为了排除以上几个问题,可以尝试以下几个解决方法: 1. 确认命令行路径与jar包路径一致,或将jar包移动至命令行所在路径。 2. 将jar包路径改为不含有中文或空格的纯英文路径。 3. 确认jar包的MANIFEST.MF文件中主类信息是否正确配置,或尝试手动配置MANIFEST.MF文件。 4. 确认jar包是否包含可执行的主类信息,或重新构建jar包并包含主类信息。 如果以上解决方法无法解决问题,可以尝试使用其他方式启动jar包,如使用IDE或命令行指定-classpath参数进行启动。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值