开头说两句
Java 基础 Demo 站: https://www.javastudy.cloud
Java 中高级开发博客: https://www.lixiang.red
Java 学习公众号: java 技术大本营
java 中用命令行执行 HelloWorld
平时我们在运行 java 程序时, 一般有两种选择, 1 是在服务器上直接用 java -jar 命令来运行程序, 2 是在 idea 中直接点击运行/debug,如下图所示:
那如果某一天,我们脱离了 idea, 要用命令行来运行这个呢?
其实 idea 已经帮我们生成了,如下图第一行所示
我们从上截取出如下内容,然后复制到命令行中,就可以运行了
/Users/lixiang/soft/jdk-11.0.2.jdk/Contents/Home/bin/java -Dfile.encoding=UTF-8 -classpath /Users/lixiang/code/tools/tools-java/out/production/classes com.platform.tools.jvm.Main
运行如下图所示:
Clion 中运行 java 代码
在 Clion 中运行 java 代码,主要是前面的 java 命令,用我们自己编译的, 然后后面的参数等直接复制就可以了,如下图所示:
然后点击运行,就可以在 ClionDebug 面板中, 看到如下所示我们的 java 代码输出
JVM 执行 Java 代码
这里我们要接着昨天的版本号输出继续往后讲,在 java.c
文件 508 行,可以看到加载 main 函数所在的类
点进去之后,可以看到. 实际上还是请求的 java 里面的类,如下图所示:
1,去找到这个类点进去之后可以看到是这个类 sun/launcher/LauncherHelper
2,去找到上面那个类中的 checkAndLoadMain
这个方法
3,这个方法有 Z(布尔值),I(整数类型),String 类型的入参
4,这个方法的返回值是 Class 类型
根据这个条件,我们可以在 Idea 中找到如下方法
然后我们一路跟踪下去, 可以看到,最终到了 ClassLoader.java
中的 defineClass1 这个 native 方法,native 方法和 jdk 源码的对应我们后面再一起学习.
在 LoadMainClass()
方法之后, 我们可以看到 CreateApplicationArgs
创建应用的参数方法,去寻找 Main 方法,执行 Main 方法,如下所示:
总结
这部分的主要的知识点是怎么在 Clion 中执行 java 程序, 这样才能为后面的调试打下基础,小伙伴们,加油!
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于