java常用操作
Easul Lv6

jar包常用网站

在环境变量中导入自己的类库

Java中使用CLASSPATH这个环境变量来指定我们的依赖包位置
所以可以通过将类库添加到CLASSPATH,方便我们import自己的类到所有项目

  • 导入class类
    目录如下,有两个类

    折叠代码块 复制代码
    1
    2
    c:\class\com\test1\Test.class
    c:\class\org\test2\Test2.class

    CLASSPATH添加c:\class即可导入我们的类

  • 导入jar包
    目录如下,有一个自定义jar包

    折叠代码块 复制代码
    1
    c:\class\test3.jar

    CLASSPATH添加c:\classc:\class\test3.jar即可导入我们jar包中的类

编译与运行

折叠代码块BASH 复制代码
1
2
3
4
5
6
7
8
9
10
11
# 编译
# -cp后边指定依赖jar包的路径,windows的路径使用\隔开,linux的路径使用/隔开
# 如果有多个jar包,windows用;隔开,linux用:隔开
# -encoding 指定编码的字符集
# -d 指定输出的目录
javac -cp xx.jar -d . -encoding utf-8 Test.java
# 运行
# -Dfile.encoding 指定运行字符集
java -Dfile.encoding=utf-8 Test
# 运行jar包
java -jar xx.jar

java运行springboot的jar包

直接运行jar包

折叠代码块BASH 复制代码
1
2
3
4
5
6
7
8
9
# nohup保证后台运行,后边需要加上&
# 操作系统常用输出流:
# 0:标准输入流 stdin
# 1:标准输出流 stdout
# 2:标准错误流 stderr
# > output,将日志输出到这个output文件中
# 2>&1是将标准错误流也写到标准输出流中

nohup java -jar app.jar > output 2>&1 &

参考

解压jar包后运行

用于需要class动态编译的情况, 直接在解压的根目录运行下边的命令即可

折叠代码块BASH 复制代码
1
2
3
4
5
6
7
8
9
10
# 解压xxx.jar到当前目录
jar -xvf xxx.jar
# 运行jar
java org.springframework.boot.loader.JarLauncher

# 也可以用unzip解压jar到某目录
unzip xxx.jar -d springboot/
cd springboot/
# 再运行jar
java org.springframework.boot.loader.JarLauncher

参考

获取当前项目包的根路径和目录内的资源

折叠代码块JAVA 复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 第一种:获取classes目录
// 结果是这样file:/home/easul/demo-0.0.1-SNAPSHOT.jar!/BOOT-INF/classes!/
String path = this.getClass().getProtectionDomain().getCodeSource().getLocation().getPath();
// 第二种:获取classes目录
// 结果是这样file:/home/easul/demo-0.0.1-SNAPSHOT.jar!/BOOT-INF/classes!/
String path = this.getClass().getProtectionDomain().getCodeSource().getLocation().getFile();
// 第三种:获取classes目录下的文件流
// .class获取其Class对象,然后获取加载该class文件的JVM的类加载器,再获取资源文件
InputStream inputStream = ScheduleListener.class.getClassLoader().getResourceAsStream("api.properties")
// 如果路径有Unicode字符, 则需转码
path = java.net.URLDecoder.decode(path, "UTF-8");
// 获取包内资源
java.net.URL fileURL = this.getClass().getResource("/UI/image/background.jpg");
// 以流获取包内资源
InputStream in = this.getClass().getResourceAsStream("/UI/image/background.txt");

参考

 评论
来发评论吧~
Powered By Valine
v1.5.2