java命令javac命令jar命令使用
java命令、javac命令、jar命令使用
java命令基础知识 #创建项目目录 mkdir -p myproject/src mkdir -p myproject/target cd myproject #创建项目文件 vim src/App.java public class App{ public static void main(String[] args){ System.out.println("hello app"); } } #编译java文件 ## 不支持递归 javac -d ./target ./src/*.java ## 支持递归(把文件列表生成到一个文件里) uninx find -name "*.java" > sources.txt win32 dir /s /B *.java > sources.txt javac -d ./target @sources.txt #执行程序 java -cp ./target App 或 cd target && java App #生成可执行的jar包 cd target jar -cvfe app.jar App . java -jar app.jar (当使用-jar参数时 -cp失效,如果需要指定classpath 请在manifest文件中指定) #引用第三方包时编译 classpath多个时windows使用分号; linux使用冒号 javac -cp ./lib/mylib.jar -d target @sources.txt #引用第三方包时执行 java -cp ./lib/mylib.jar:./target App #引用第三方包时编译成可执行文件 1.编写manifest文件(注意文件最后加上一个换行) vim manifest.mf Manifest-Version: 1.0 Main-Class: App Class-Path: lib/mylib.jar lib/mylib2.jar (每个单独的jar用空格隔开就可以了,如果换行每行第一个字符是空格) (注意文件末尾必须一个空行) 2.编译jar包 cd target jar -cvfm app.jar ../manifest.mf . 3.启动可执行的jar 把引了lib文件夹与app.jar放在同一目录 java -jar app.jar 关于lib包的可以放的位置 1.与app.jar同目录 2.放到%JRE_HOME%/lib/ext下面,这个目录下的jar包会在Bootstrap Classloader工作完后由Extension Classloader来加载。 3.通过运行时参数实现 win32 java -Xbootclasspath/a: mylib.jar;mylib2.jar; -jar app.jar (使用分号) unix java -Xbootclasspath/a: mylib.jar:mylib2.jar: -jar app.jar (使用冒号) 4.能否把lib包和可执行的jar打包在一起? 可以的,添加一个特殊的类加载器,该类加载器将在执行主类之前为您透明地加载那些JAR 如:使用eclipse导出的可执行jar包,它是借助做到的JarRsrcLoade Springboot项目的org.springframework.boot.loader.JarLauncher