编译和运行过程可参考:
https://blog.csdn.net/cynhafa/article/details/82425456
eclipse 和linux 下启动java程序详解
一、eclipse 中 run as 》java Application 运行程序
执行的就是 class文件,使用的依赖就是maven Dependencies 下的jar。
run as 》run configurations 里面配置了 main 主函数, classpath 配置了class路径和依赖的jar路径,如果是maven 依赖jar路径 就是 maven Dependencies 里的jar。
如果没有class文件就会报 加载不到主类。
猜测:run as 》java Application 应该是调用 jdk 的 java.exe 来执行的程序,并且传递了run configurations 里面配置的参数。
二、 linux 下 java -jar xxx.jar 启动jar包
调用ava.exe运行jar文件中的class,
可运行的jar包中都有一个META-INF/MANIFETS.MF文件,其中配置了运行入口类,版本信息、classpath等信息。
jdk中工具javac.exe ,java.exe,jar.exe 的使用详解
一、javac.exe编译java文件
javac test.java
二、java.exe 运行class文件
执行带main方法的class文件,命令行为:
java <CLASS文件名>
注意:CLASS文件名不要带文件后缀.class
java test
java com.ee2ee.test.PackageTes
三、java.exe运行jar文件中的class
java -cp test.jar com.ee2ee.test.PackageTest
四、jar.exe 打jar包
jar cvf 生成jar包的完整名称 要生成的class文件所在目录以及名称
例如: jar cvf d:/test.jar e:/review/coreJava/chapter4/Employee.class 表示将目录e:/review/coreJava/chapter4下面的Emlopyee.class生成jar文件并存放在d盘下面的test.jar里面。
jar.exe是jdk中的自带的压缩解压工具,Eclipse中的Export功能可以导出jar包,或者手动打可运行的jar包,都是用的jar.exe,只是做成了图形化的界面而已,当然jdk中也提供了压缩解压的api,比如:ZipFile、ZipEntry、ZipOutputStream等,我们也可以自己实现一个图形化的压缩工具。
应用场景:1.sdk开发中需要导出自己的jar包提供给第三方使用;2.替换各种压缩文件中文件,比如Android开发过程中多渠道打包,渠道信息是在assets中配置文件读取的,这时候就要循环替换assets中的配置文件,我们知道apk中放到assets目录下的文件时没有经过编程处理的,所以替换其目录下的文件就可以直接用jar命令来实现,而不用先将apk反编译,这样可以节省用时。
基本常识:
1.各种文件xxxx.jar、xxxx.rar、xxxx.war、xxxx.zip、xxxx.apk的本质都是压缩文件,只是用到的压缩算法可能不同;
2.java中的jar包是可以直接运行的,可运行的jar包中都有一个META-INF/MANIFETS.MF文件,其中配置了运行入口类,版本信息、classpath等信息。