Java获取Window和Linux系统的项目ClassPath路径
不啰嗦,直接复制工具类
/**
* 在windows和linux系统下均可正常使用
* Create by yster@foxmail.com 2018/6/6/006 14:51
*/
public class PathUtil {
//获取项目的根路径
public final static String classPath;
static {
//获取的是classpath路径,适用于读取resources下资源
classPath = Thread.currentThread().getContextClassLoader().getResource("").getPath();
}
/**
* 项目根目录
*/
public static String getRootPath() {
return RootPath("");
}
/**
* 自定义追加路径
*/
public static String getRootPath(String u_path) {
return RootPath("/" + u_path);
}
/**
* 私有处理方法
*/
private static String RootPath(String u_path) {
String rootPath = "";
//windows下
if ("\\".equals(File.separator)) {
//System.out.println(classPath);
rootPath = classPath + u_path;
rootPath = rootPath.replaceAll("/", "\\\\");
if (rootPath.substring(0, 1).equals("\\")) {
rootPath = rootPath.substring(1);
}
}
//linux下
if ("/".equals(File.separator)) {
//System.out.println(classPath);
rootPath = classPath + u_path;
rootPath = rootPath.replaceAll("\\\\", "/");
}
return rootPath;
}
//更多扩展方法任你发挥
}
使用方法
//自定义追加路径并格式化
System.out.println(ProjectPath.getRootPath("userImg/test.txt"));
//获取根目录
System.out.println(ProjectPath.getRootPath());
注意
在使用System.getProperty("user.dir")时:
如果是在IDE中启动,则获得的路径为D:\xxxx\projectName,包括项目名;
如果是以Jar包方式启动,得到该jar包所在的路径。如project.jar在D:\xxxx下,获得的路径就是D:\xxxx
但是如果是以war包方式启动获得的是:D:\apache-tomcat-9.0.7\bin
所以此方法适合不依赖Tomcat容器(或者内嵌Tomcat如SpringBoot)的项目。
Java获取Window和Linux系统的项目ClassPath路径的更多相关文章
- Linux系统实战项目——sudo日志审计
Linux系统实战项目——sudo日志审计 由于企业内部权限管理启用了sudo权限管理,但是还是有一定的风险因素,毕竟运维.开发等各个人员技术水平.操作习惯都不相同,也会因一时失误造成误操作,从而 ...
- linux系统tomcat项目部署和tomcat访问日志
一.只用ip地址访问 先把端口号改成80,然后用 <Host name="localhost" appBase="webapps" 137 ...
- java使用SSH连接Linux系统
SSH连接linux系统使我们在开发项目中常用到的,现在留下来,做个记录 package com.log; import java.io.BufferedReader; import java.io. ...
- Java获取环境变量和系统属性
Java获取服务器环境变量和JVM系统变量 当程序中需要使用与操作系统相关的变量(例如:文件分隔符.换行符)时,Java提供了System类的静态方法getenv()和getProperty() ...
- java 基础(二) 搭建Java编译环境(linux系统)
jdk安装配置 首先下载JDK和JRE,这里你的需要看看你的Linux系统是多少位的,比如我的是64位的:下载JDK并指定到Download目录,JRE同样操作:解压并且配置环境: tar -zxvf ...
- 获取Win和Linux系统启动时间,类似uptime功能,用于判断是否修改过系统时间
目录 前言 测试代码 Win测试 Linux测试 总结 前言 有时候需要判断系统是否有修改过时间,最简单的方法就是获取当前时间A,然后sleep X秒,然后获取 时间B,如果 时间B - 时间A ≠ ...
- 腾讯云linux系统部署项目无法通过外网访问
最近尝试使用了一下腾讯去的linux系统服务器,但是却遇到各种问题,下面记录的问题是项目部署完成后却无法通过外网访问. 服务器:腾讯云 系统 :CentOS 8.0 64位 处理思路:通过度娘百般摸索 ...
- linux系统各种日志存储路径和详细介绍
Linux常见的日志文件详述如下1./var/log/boot.log(自检过程)2./var/log/cron (crontab守护进程crond所派生的子进程的动作)3./var/log/mail ...
- [Java][Liferay] 解决在Linux系统中liferay-ext项目无法卸载的问题
今天遇到liferay-ext无法卸载,log中显示卸载了,但是在App Manager中依然可以看到安装过的ext,其中一个原因是webapps下面的**-ext文件夹的权限只有root才能修改,将 ...
随机推荐
- Android包管理机制(二)PackageInstaller安装APK
前言 在本系列上一篇文章Android包管理机制(一)PackageInstaller的初始化中我们学习了PackageInstaller是如何初始化的,这一篇文章我们接着学习PackageInsta ...
- java国际化
import java.util.Locale; import org.junit.Test; /** * 使用指定的国际化文件 */ public class Demo { @Test public ...
- 前后端分离djangorestframework——版本控制组件
什么是版本控制 在实际开发中,随着时间的更新迭代,我们维护的项目可能会有很多个版本,所以我们写的API也有很多个版本,但是迭代到高版本,不可能以前的版本就不用了,比如一个手机端的app,不定期发布新版 ...
- Failed to decrypt protected XML node "DTS:Password" with error 0x8009000B "Key not valid for use in specified state.". You may not be authorized to access this information. This error occurs when t
Question SSIS包从A服务器搬迁到B服务器,运行报错 Description: Failed to decrypt protected XML node "DTS:Password ...
- LeetCode算法题-Reverse Bits(Java实现)
这是悦乐书的第185次更新,第187篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第44题(顺位题号是190).给定32位无符号整数,求它的反转位.例如: 输入:4326 ...
- 本学期c#总结
本学期我学习了C#编程认识到了什么是方法什么是关键字,和代码的作用.认识到了编程不仅仅是对一个程序的编程,也是对数据的编程.程序是由数据组成的.c#本身就是一种语言,C#适用于生成面向.net fr ...
- java操作elasticsearch实现query String
1.CommonTersQuery: 指定字段进行模糊查询 //commonTermsQuery @Test public void test35() throws UnknownHostExcept ...
- 英语进阶系列-A03-英语升级练习一
古诗背诵 要求:根据诗句,先翻译成现代文,然后绘制图像. 词汇系列 要求:认真朗读单词,然后通过该单词联想2个词汇,然后给每个单词造句. 例子:class班级,联想到了classroom教室,clas ...
- Go学习笔记07-结构体与方法
Go学习笔记07-结构体与方法 Go语言 面向对象 结构的定义与创建 面向对象 Go语言只支持封装,不支持继承和多态. Go语言中只有struct,即结构体:没有class. 结构的定义与创建 pac ...
- line-height
如何实现左右两边有小竖线,但是高度比中间的字短? 用line-height,把line-height设置得跟height一样大,同时把font-size设置比line-height大即可