首页 > 编程语言 >java命令javac命令jar命令使用

java命令javac命令jar命令使用

时间:2023-02-03 18:24:59浏览次数:34  
标签:java target javac app jar 命令 lib App

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

 

标签:java,target,javac,app,jar,命令,lib,App
From: https://www.cnblogs.com/liuxm2017/p/17090149.html

相关文章

  • 学习java第七天
    变量变量是什么:就是可以变化的量java是一种强类型的语言,每个变量都必须声明其类型。java变量是程序中最基本的存储单位,其要素包括变量名,变量类型和作用域不建议在一行......
  • jenkins中ssh远程无法执行javac命令
    最近发现有个项目修改后在jenkins发布不生效,查找原因,根据输出的日志发现javac命令不存在,但是登录上服务器发现手动输入执行javac 相关命令是没问题的,于是在jenkins中添加......
  • script javascript / chrome disable javascript
    s谷歌浏览器禁用javascript以及控制台使用https://blog.csdn.net/weixin_44058725/article/details/125262800前言:有的时候调试,需要禁用js那我们可以在浏览器里禁......
  • java转义字符和变量的使用
    course-2b站20​1.演示转义字符的使用​\t一个制标位,实现对齐功能​\n换行符​\\输出一个\​\\\\输出两个\\​\"输出一个"​\'输出一个'​\r输出一个回车​//演示转义字......
  • k8s 常用命令
    k8s常用命令 node 查看服务器节点kubectlgetnodes 查看服务器节点详情kubectlgetnodes-owide 节点打标签kubectllabelnodes<节点名称>labelName=......
  • Linux 命令 | telnet
    telnet是登录远程服务器的一种工具。不过所有通信都是明文发送,不会加密。因此一般不会用来登录远程服务器,不过可以调试远程连接问题。用法telnet<hostnameorip><......
  • java类型转换和练习
    1. 自动类型转换细节1. 有多种数据类型混合运算时,自动转换成容量最大的数据类型然后再运算2. byte、short、char之间不能相互自动转换3. 当把数据分配给......
  • java运算符
    1.概述运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。1)算术运算符2)赋值运算符3)关系运算符[比较运算符]4)逻辑运算符5)位运算符[需要二进制基础]......
  • java lambda表达式
     参考:https://blog.csdn.net/qq_46207024/article/details/124183519可省略类型声明:不需要声明形式参数类型可省略参数括号:一个参数无需定义括号,但多个参数需要定义括......
  • java code tool / Vistual Studio Code / chatGPT
    schatGPT如何下载https://www.somode.com/softjc/30689.htmlchatGPT是一个非常智能化的AI工具,在这里你可以和他进行任何对话,chatGPT都会给你准确的答复,而且没有其他AI......