经过试验,不管是否是Jar包,不管是否是Tomcat部署,以下三个方法均可实现。

package test;

public class MyPath {

public static String getProjectPath() {

java.net.URL url = MyPath.class.getProtectionDomain().getCodeSource().getLocation();

String filePath = null;

try {

filePath = java.net.URLDecoder.decode(url.getPath(), "utf-8");

} catch (Exception e) {

e.printStackTrace();

}

if (filePath.endsWith(".jar"))

filePath = filePath.substring(0, filePath.lastIndexOf("/") + 1);

java.io.File file = new java.io.File(filePath);

filePath = file.getAbsolutePath();

return filePath;

}

public static String getRealPath() {

String realPath = MyPath.class.getClassLoader().getResource("").getFile();

java.io.File file = new java.io.File(realPath);

realPath = file.getAbsolutePath();

try {

realPath = java.net.URLDecoder.decode(realPath, "utf-8");

} catch (Exception e) {

e.printStackTrace();

}

return realPath;

}

public static String getAppPath(Class> cls){

//检查用户传入的参数是否为空

if(cls==null)

throw new java.lang.IllegalArgumentException("参数不能为空!");

ClassLoader loader=cls.getClassLoader();

//获得类的全名,包括包名

String clsName=cls.getName();

//此处简单判定是否是Java基础类库,防止用户传入JDK内置的类库

if(clsName.startsWith("java.")||clsName.startsWith("javax.")) {

throw new java.lang.IllegalArgumentException("不要传送系统类!");

}

//将类的class文件全名改为路径形式

String clsPath= clsName.replace(".", "/")+".class";

//调用ClassLoader的getResource方法,传入包含路径信息的类文件名

java.net.URL url =loader.getResource(clsPath);

//从URL对象中获取路径信息

String realPath=url.getPath();

//去掉路径信息中的协议名"file:"

int pos=realPath.indexOf("file:");

if(pos>-1) {

realPath=realPath.substring(pos+5);

}

//去掉路径信息最后包含类文件信息的部分,得到类所在的路径

pos=realPath.indexOf(clsPath);

realPath=realPath.substring(0,pos-1);

//如果类文件被打包到JAR等文件中时,去掉对应的JAR等打包文件名

if(realPath.endsWith("!")) {

realPath=realPath.substring(0,realPath.lastIndexOf("/"));

}

java.io.File file = new java.io.File(realPath);

realPath = file.getAbsolutePath();

try{

realPath=java.net.URLDecoder.decode(realPath,"utf-8");

}catch(Exception e){

throw new RuntimeException(e);

}

return realPath;

}//getAppPath定义结束

}

使用Jar包,在Tomcat的运行结果如下:

ProjectPath: D:\J2EE\Tomcat 6.0\webapps\MyService1WebP\WEB-INF\lib

RealPath: D:\J2EE\Tomcat 6.0\webapps\MyService1WebP\WEB-INF\classes

Apppath: D:\J2EE\Tomcat 6.0\webapps\MyService1WebP\WEB-INF\classes

取 java 程序运行的路径_获取Java程序运行的路径 | 获取当前jar包的路径相关推荐

  1. JAVA获取程序/jar包所在路径

    public class path{public static void main(String []args){//输出本程序/jar包所在路径System.out.println(System.g ...

  2. 微信小程序系统教程Java版[3/3阶段]_微信小程序电商系统-翟东平-专题视频课程...

    微信小程序系统教程Java版[3/3阶段]_微信小程序电商系统-2445人已学习 课程介绍         微信小程序系统教程[初级阶段],微信小程序0基础学起,讲解微信小程序开发的基础知识. 微信小 ...

  3. 视频教程-微信小程序系统教程Java版[3/3阶段]_微信小程序电商系统-微信开发

    微信小程序系统教程Java版[3/3阶段]_微信小程序电商系统 微信企业号星级会员.10多年软件从业经历,国家级软件项目负责人,主要从事软件研发.软件企业员工技能培训.已经取得计算机技术与软件资格考试 ...

  4. java jar包的路径

    用java些的脚本,然后打成jar包运行,jar包里的程序需要读配置文件的一些参数,所以需要确定读配置文件的路径.一般配置文件和jar包放置在同一目录下,这个时候就需要jar包里的代码,取到jar包存 ...

  5. 【源码+图片素材】Java王者荣耀游戏开发_开发Java游戏项目【王者荣耀】1天搞定!!!腾讯游戏_Java课程设计_Java实战项目_Java初级项目

    王者荣耀是当下热门手游之一,小伙伴们是否想过如何制作一款属于自己的王者荣耀游戏呢? 本课程讲解了一个王者荣耀游戏的详细编写流程,即使你是刚入门Java的新手,只要你简单掌握了该游戏所需要的JavaSE ...

  6. 获得jar包存放路径的方法

    获得jar包存放路径的方法 Posted by zeal on 2006-07-11 09:45 , 1371 characters |  + 0 - 0   English 转载请保留本行原始出处声 ...

  7. java jar包存放位置_获得运行jar包存放路径的方法

    在 java 中, System.getProperty("user.dir") 得到的是当前工作路径(对应命令行命令就是 linux 下的 pwd . windows 下的 cd ...

  8. java程序运行5步骤_浅析Java程序的执行过程

    一 .jdk内容概述 当安装好jdk后(本示例jdk版本为11.0.1,不同版本,目录有细微差别,但bin目录包含的exe是一样的),打开bin目录,有两个重要的exe文件:javac.exe(编译器 ...

  9. java获取项目中的路径_通过java获取当前项目路径

    展开全部 getClass().getResource() 方法获得相对e5a48de588b63231313335323631343130323136353331333332643932路径( 此方 ...

最新文章

  1. Python培训分享:PyQT是什么?PyQt4和PyQt5的区别是什么?
  2. 企业数字化转型,AI平台能力建设是关键
  3. matlab消去前一个图,各位matlab高手,如何从2个3元方程中消去一个变量,然后做3维图形~...
  4. Hibernate, 想说爱你不容易
  5. iOS Hacker Keychain相关The executable was signed with invalid entitlements
  6. linux区分个系统脚本
  7. JavaScript 图片上传预览效果
  8. uni map 实时记录轨迹_北斗GPS汽车行车记录仪,部标808商用轿车专用
  9. 文件上传表单 上传文件的细节 文件上传下载和数据库结合
  10. 红芯事件追踪:官方致歉承认基于开源架构;创始人履历被指夸大
  11. Android中如何提取和生成mp4文件
  12. 20155207第十章课下测试补交
  13. 深度学习将灰度图着色_使用DeOldify着色和还原灰度图像和视频
  14. python绝对值_如何在Python中获得数字的绝对值?
  15. 计算机英语摘要,跪求计算机论文摘要英文翻译
  16. UART(Universal Asynchronous Receiver/Transmitter)
  17. 求解答!iframe在IE浏览器加载页面无反应问题
  18. 让我带你弄明白什么是RPC ,帮你整理一下你的小脑瓜!
  19. png图片合成gif动态图-python3
  20. 互联网大公司与创业公司

热门文章

  1. 学习minix 3(未完成)
  2. yum 安装 Mysql 5.7,忘记密码解决方案
  3. Oracle异常汇总
  4. angular--解决angular图片加载失败问题
  5. 【报告分享】2021年Z世代“潮力量”洞察报告.pdf(附下载链接)
  6. 【报告分享】基础设施的新兴趋势-毕马威.pdf(附pdf下载链接)
  7. original_keras_version = f.attrs[‘keras_version‘].decode(‘utf8‘)AttributeError: ‘str‘ object has no
  8. 2015-2020年各类国际会议与期刊基于图像的三维对象重建论文综述(8)——Comparison
  9. 剑指offer 面试题58 - II. 左旋转字符串
  10. Java在程序设计题目中的妙用