HelloWorld之运行异常

本文记录了一次在IDEA中运行HelloWorld程序时遇到的奇怪错误,并详细描述了从百度搜索解决方案到最终发现问题根源的过程。错误源于包名与Java限制冲突,调整包名后问题得以解决。

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

HelloWorld中奇怪的错误

背景

​ 小主新入手一款小新pro14(i710代16G轻薄本),总之很香。前两天已经预装了idea2019.3版本,以及JDK11,8。为什么装两个JDK呢,是因为闲着没事干吗,当然不是了,因为对新技术的热情,可以切换着看JDK底层特性。

开始

经过一阵倒腾,建包,开启我的helloWorld

在这里插入图片描述

很无语,报了下面这个看不懂的错误。

南辕北辙

由于小主和大多数人一样,是面向百度编程,所以我就把问题贴了出来,打开百度搜索。

果然有不少同学遇到小主相同的问题
在这里插入图片描述
排在前面的同学大多都是说java -version 跟javac -version 版本不同,需要把版本调成一致
我们在初学java时候应该采用过如下的命令在黑框命令行执行java程序

#javac java编译命令
javac HelloWorld.java
#java java运行命令
java Helloworld

到小主的电脑跑一下,很遗憾未解决我的问题。
在这里插入图片描述

后面连续访问了好几个网页无果:小主突发奇想,会不会是IDE有问题,小主又去下了个eclipse,在eclipse中敲起了HelloWorld,执行未报错。
在这里插入图片描述

!!!!难道天要亡我大清(idea),我就不能一直真香下去了吗??不行我要重装一下

下面英文不是提示我check my installation 我要重装一下

A JNI error has occurred, please check your installation and try again

真正解决问题

正当我准备重装的时候,灵机一动,我点到出问题的地方看了一眼,然后打了个断点,开始debug
在这里插入图片描述进入到Classloader.preDefineClass()方法 可以在方法上看到这样一段注释
Classloader类加载器,类加载的后续学习了再总结。

    /* Determine protection domain, and check that:
        - not define java.* class,  这里是我们关注的地方,不允许以java开头的包名
        - signer of this class matches signers for the rest of the classes in
          package.
    */

回到我们idea的代码

//天杀的怎么是这个包名啊,不应该是com.hong.learn.lesson1的吗
//一万只草泥马飞过
package java.main.com.hong.learn.lesson1;

public class lesson1 {

    public static void main(String[] args) {
        System.out.println("Hello World");

    }
}

重新修改目录结构,运行正常

叹:终于不用重装了。
在这里插入图片描述

总结

1.面向百度编程,有时候确实能带给我们很多便利,因为你遇到的问题别人肯定也遇到过,但它带给我们便利的同时,阻碍了我们对问题的思考,阻碍了自己对技术的追求,也让我们更多的时候遇到问题无从下手。抛开百度,我们需要从问题实际出发,自己去探索,很多时候自己对源码多加深入了解,就能找到问题的答案。

2.学会真正的看穿问题,不能依赖几个关键字搜索,网页信息大多都是游览量高的排在前面,大多数人胡乱搜答案,把很多的错误答案搜索点击量提高,从而一直影响着你快速找到真正的答案。所以首先你得看穿问题究竟是什么,从而也能排除很多错误的答案。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值