在使用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文件过后在运行就可以了。完美的解决问题。