方案

为解决类冲突,我们可以使用下述的方案定位一个class所在的位置

ClassName.class.getResource("").getPath();

获取ClassName所在的位置,即使它是在一个jar包中;如果所在jar包添加了安全保护,会获取失败。

ClassName.class.getProtectionDomain().getCodeSource().getLocation().getFile();

获取ClassName所在jar的位置,如果所在jar被安全保护,则获取失败。

DEMO

 1 package cn.j2se.junit.classpath;
2
3 import static org.junit.Assert.*;
4
5 import java.io.UnsupportedEncodingException;
6
7 import org.apache.commons.logging.Log;
8 import org.apache.commons.logging.LogFactory;
9 import org.junit.Test;
10
11 public class ClassPathTest {
12 private static final Log logger = LogFactory.getLog(ClassPathTest.class);
13 @Test
14 public void testClassPath() {
15 String classPath = ClassPathTest.class.getResource("").getPath();
16 logger.info("the classpath of ClassPathTest is:[" + classPath + "]");
17
18 assertEquals(1, 1);
19 }
20
21 @Test
22 public void testJarPath() throws UnsupportedEncodingException {
23 // System.class.getResource("") == null
24 String lfClassPath = LogFactory.class.getResource("").getPath();
25 logger.info("the classpath of LogFactory is:[" + lfClassPath + "]");
26
27 // System.class.getProtectionDomain().getCodeSource() == null
28 String lfJarPath = LogFactory.class.getProtectionDomain().getCodeSource().getLocation().getFile();
29 logger.info("the jar path of LogFactory is:[" + lfJarPath + "]");
30 assertEquals(1, 1);
31 }
32 }

 
测试结果:

1 [INFO ] 2015-08-25 14:26:30 CST
2 the classpath of ClassPathTest is:[/D:/develop/eclipse_jee_juno_SR2/workspace/lijinlong/j2se/bin/cn/j2se/junit/classpath/]
3
4 [INFO ] 2015-08-25 14:26:30 CST
5 the classpath of LogFactory is:[file:/D:/develop/eclipse_jee_juno_SR2/workspace/lijinlong/j2se/lib/commons-logging-1.1.1.jar!/org/apache/commons/logging/]
6
7 [INFO ] 2015-08-25 14:26:30 CST
8 the jar path of LogFactory is:[/D:/develop/eclipse_jee_juno_SR2/workspace/lijinlong/j2se/lib/commons-logging-1.1.1.jar]

定位所用的class的更多相关文章

  1. LBS基站定位

    LBS基站定位(Location Based Service,简称LBS)一般应用于手机用户,它是基于位置的服务,通过电信.移动运营商的无线电通讯网络(如GSM网.CDMA网)或外部定位方式(如GPS ...

  2. web开发如何使用高德地图API(一)浏览器定位

    说两句: 以下内容除了我自己写的部分,其他部分在高德开放平台都有(可点击外链访问). 我所整理的内容以实际项目为基础希望更有针对性的,更精简. 点击直奔主题. 准备工作: 首先,注册开发者账号,成为高 ...

  3. 商汤提出解偶检测中分类和定位分支的新方法TSD,COCO 51.2mAP | CVPR 2020

    目前很多研究表明目标检测中的分类分支和定位分支存在较大的偏差,论文从sibling head改造入手,跳出常规的优化方向,提出TSD方法解决混合任务带来的内在冲突,从主干的proposal中学习不同的 ...

  4. NMEA0183

    NMEA简介 NMEA是全国海洋电子协会(National Marine Electronics Association):国际海上电子协会(National Marine Electronics A ...

  5. GCC编译器原理(一)------GCC 工具:addr2line、ar、as、c++filt和elfedit

    1.3 GCC 工具 1.3.1 binutils 工具集 工具 描述 addr2line 给出一个可执行文件的内部地址,addr2line 使用文件中的调试信息将地址翻译成源代码文件名和行号. ar ...

  6. 玩转X-CTR100 l STM32F4 l U-Blox NEO-6M GPS卫星定位-nmealib解码库移植解码

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器 扩展GPS ...

  7. 目标跟踪ObjectT综述介绍

    此文也很详细:http://blog.csdn.net/maochongsandai110/article/details/11530045 原文链接:http://blog.csdn.net/pp5 ...

  8. iOS开发系列--地图与定位

    概览 现在很多社交.电商.团购应用都引入了地图和定位功能,似乎地图功能不再是地图应用和导航应用所特有的.的确,有了地图和定位功能确实让我们的生活更加丰富多彩,极大的改变了我们的生活方式.例如你到了一个 ...

  9. C#调用百度高精度IP定位API通过IP获取地址

    API首页:http://lbsyun.baidu.com/index.php?title=webapi/high-acc-ip 1.申请百度账号,创建应用,获取密钥(AK) http://lbsyu ...

随机推荐

  1. Value does not fall within the expected range 值不在预期的范围内

    用vs2012 打开web.config时,提示如下错误:“Value does not fall within the expected range”; 中文提示:“值不在预期的范围内” 解决方案: ...

  2. 01-UIScrollView01-大图片展示

          源代码下载链接:01-UIScrollView01-大图片展示.zip283.7 KB // //  MJViewController.m //  01-UIScrollView01-大图 ...

  3. css3动画总结

  4. ACC026简要题解

    这场AGC是时间正好在NOI之前休养生息的日子里,果断选择了放弃(虽然也从没有用大号打过).在随便做完了前几题之后就踏上了去长沙的旅程.NOI系列比赛总是休闲无比,咕咕不断,竟然连开幕式都能咕,今天A ...

  5. Linux 入门记录:七、fdisk 分区工具

    一.fdisk分区工具 fdisk 是来自 IBM 的老牌分区工具,支持绝大多数操作系统,几乎所有的 Linux 发行版都装有 fdisk,包括在 Linux 的 resuce 模式下依然能够使用. ...

  6. Composer 手动安装

    Linux/Mac 环境 sudo wget -O /usr/local/bin/composer https://dl.laravel-china.org/composer.phar sudo ch ...

  7. python基础===进程,线程,协程的区别(转)

    本文转自:http://blog.csdn.net/hairetz/article/details/16119911 进程拥有自己独立的堆和栈,既不共享堆,亦不共享栈,进程由操作系统调度. 线程拥有自 ...

  8. ogre3d环境配置 SDK安装配置及简单事例教程

    ogre3d环境配置 SDK安装配置及简单事例教程 http://www.cr173.com/html/22594_1.html ogre3d环境配置 SDK安装配置及简单事例教程 http://ww ...

  9. Java Redis 连接池 Jedis 工具类

    import org.slf4j.Logger; import org.slf4j.LoggerFactory; import redis.clients.jedis.Jedis; import re ...

  10. 修改mysql权限

    关于mysql的用户管理,笔记 1.创建新用户 通过root用户登录之后创建 >> grant all privileges on *.* to testuser@localhost id ...