Java使用jar命令时出现'class' or 'interface' expected,expected,需要class, interface或enum,错误: 找不到或无法加载主类等情况时

在使用jar命令时踩到的坑

问题其实在于Example文件和Square文件不能放在一个文件夹下
今天在编写代码的时候发现了一个问题,在使用jar命令生成jar文件过后,
在package所在的目录下创建主类文件Example.java后,当我编译成功后开始运行,结果报出了错误: 找不到或无法加载主类Example,最后经过一番探究终于解决问题,下面对我所遇到的四个问题做一个简单的梳理:
1.‘class’ or ‘interface’ expected,expected
2.需要class, interface或enum
3.无法访问Square
错误的类文件: Square.java
文件不包含类: Square

4.错误: 找不到或无法加载主类 Example
下面我来对我所遇到的四个问题进行解释,第一个错误出现的很奇葩,以至于一开始都没想到会报出这样的错,然后我就去网上寻找资料,发现,最可行的说法是这么讲的:(应该是适用于大多数这样的问题)
问题:‘class’ or ‘interface’ expected,expected
原因:就是没有类或者接口,也就是需要的包你没有import进去,还有一种可能就是你把类的名字写错了但是此处我的问题出现的原因是:我在代码末尾多加了一个花括号

问题需要class, interface或enum
原因网上的说法有很多,其中有个人说法是编码出现了问题,我觉得这应该也是大多数人碰到的原因,但是我在这里却又不是这个原因,我只是取消了代码间的空格便好了

问题:无法访问Square
错误的类文件: .\Square.java
文件不包含类: Square

解决办法有一种办法是删除Square.java文件,但是删除过后我们继续编译我们后面的Example6.java文件时就会使我们的下一步错误
我写这篇文章要表达的意思便在这个问题上面,当我们删除了Square.java文件以及Square.class文件过后我们在接下来编译Example文件时,就会出现错误: 找不到或无法加载主类 Example的情况,为什么找不到?因为Square相关的文件被删除了,而Java对package的调用特别的严格,所以导致Example文件无法通过编译。那不删除就无法通过通过编译,删除过后可以通过编译,但是无法运行。两种方法都无法解决问题。其实有很多的问题,我们把问题提出来问题就已经被解决了不删除就无法通过通过编译,删除过后可以通过编译但无法运行我们此时只需要把两种文件放到不同的文件夹下即可。所以我把Square.java,Square.calss文件移动到了别的目录,然后再来编译Example.java文件过后在运行就可以了。完美的解决问题。

  • 16
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 我不理解你的问题,可以给我一些更多的信息吗?这个错误通常发生在 Java 代码中,表示缺少了类、接口或枚举的定义,导致代码无法编译通过。 可能的原因是在代码中缺少了必要的类、接口或枚举的定义,或者在代码中出现了语法错误,导致编译器无法正确解析代码。 要解决这个问题,需要检查代码中是否存在语法错误,以及是否正确定义了所需的类、接口或枚举。如果代码正确无误但仍然无法解决问题,可以考虑检查编译器版本是否正确,并尝试重新编译代码。 ### 回答2: 在Java编程中,经常会遇到“classinterface, or enum expected”的错误提示。 这个错误提示一般是由于程序中缺少了classinterfaceenum关键字而导致的。在Java中,所有的代码都需要被写在类中,因此,如果在代码中没有定义类,编译器就会报出这个错误。 关于classinterfaceenum的区别: ClassJava中最基本的类,它是所有类的父类,它可以用来定义一些变量和方法; Interface是一种特殊的类,它只包含方法和常量的定义,而没有实际的实现。通过继承Interface,可以让类实现一些特定的接口功能; EnumJava中的枚举类型,它是一种特殊的类,用来声明一组常量。 在程序出现classinterface, or enum expected错误,我们可以检查程序中是否存在以下问题: 1. 是否忘记了给程序定义一个类? 2. 是否忘记在类中添加必要的方法? 3. 是否忘记了在类定义前添加public或其他访问修饰符? 4. 是否在代码中误写了某些关键字? 当我们遇到这个错误提示,可以通过认真检查代码来错误,在修正错误后,再次编译程序即可。 ### 回答3: 在Java编程中,当我们遇到“class, interface, or enum expected”的编译错误,意味着编译器无法识别或解析当前语句的类型。通常出现这种错误情况有以下几种情况: 1. 缺少类定义或接口定义 当我们在写代码,如果没有定义类或接口,而直接写下了方法或变量定义,编译器会提示“class, interface, or enum expected”的错误,因为方法或变量必须要定义在类或接口中才能被使用。 2. 拼写错误或语法错误 编写Java代码,如果存在语法错误或者单词拼写错误,同样会导致编译器无法解析当前语句的类型。在检查代码,应该逐个排查每一行代码是否存在拼写错误或语法错误。 3. 忘记导入类或接口 Java中如果使用了其他包的类或接口,需要通过import语句进行导入。如果忘记导入相关的类或接口,同样也会导致编译器提示“class, interface, or enum expected”的错误。 4. 语句在错误的位置 Java编程中,不同的语句有不同的适用位置。如果将某一类语句写在了错误的位置,也会导致编译器无法解析类型。在写代码应该注意语句的位置,避免将不适合放在当前位置的语句写在该位置。 总之,当我们在Java开发中遇到“class, interface, or enum expected”的编译错误需要先检查代码是否存在上述情况,并逐个排查,错误的原因并进行相应的修复。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值