`

获取classpath之外资源路径的方法

    博客分类:
  • java
web 
阅读更多
// web工程根路径
private static final String WEB_ROOT;

// web工程下的WEB-INF路径
private static final String WEB_INF_PATH;

// web工程下的etc/config/路径
private static final String CONFIG_PATH;

//取当前操作系统版本名
private static final String SYSTEM_NAME = System.getProperty("os.name");

private static final String LINUX ="Linux";

private static Log logger = LogFactory.getLog(ConfigLocation.class);
static
{
WEB_INF_PATH = chopLastSection(getClassPath());
WEB_ROOT = chopLastSection(WEB_INF_PATH);
CONFIG_PATH = WEB_ROOT.concat("etc/config/"
.replace("/", File.separator));
}

/**
* 获取web工程根路径,该路径以文件分隔符结束
*
* @return web工程根路径
*/
public static String getWebRoot()
{
return WEB_ROOT;
}

/**
* 获取web工程下的WEB-INF路径,该路径以文件分隔符结束
*
* @return web工程下的WEB-INF路径
*/
public static String getWebInfPath()
{
return WEB_INF_PATH;
}

/**
* 获取web工程下etc/config/的路径,该路径为项目配置文件路径
*
* @return web工程下etc/config/的路径
*/
public static String getConfigPath()
{
return CONFIG_PATH;
}

private static String chopLastSeparator(String src)
{
if (src.endsWith(File.separator))
{
src = src.substring(0, src.lastIndexOf(File.separator));
}
return src;
}

private static String chopLastSection(String src)
{
String temp = chopLastSeparator(src);
return temp.substring(0, temp.lastIndexOf(File.separator) + 1);
}

/**
* 获取classpath
*
* @return classpath
*/
public static String getClassPath()
{
String url = Thread.currentThread().getContextClassLoader()
.getResource("").toString().replace("/", File.separator);
try
{
url = URLDecoder.decode(url, Charset.defaultCharset().toString());
String prefix = "file:".concat(File.separator);
if (url.startsWith(prefix))
{
url = url.substring(prefix.length());
if(SYSTEM_NAME.startsWith(LINUX)){
if(url.indexOf(":") > -1){
url = url.substring(File.separator.length());
}
}
}
if(SYSTEM_NAME.startsWith(LINUX)){
url="/"+url;
}
}
catch (UnsupportedEncodingException e)
{
logger.error("The system should always have the platform default");
}
return url;
}
分享到:
评论

相关推荐

    基于获取JAVA路径,包括CLASSPATH外的路径的方法详解

    然而,描述中提到的重点是获取CLASSPATH之外的路径。CLASSPATH是Java查找类和资源的默认路径,但有时我们需要加载不在这个路径中的资源。以下是一些常用的方法: 1. 使用`this.getClass().getResource("")`:这种...

    JAVA获取CLASSPATH路径的方法详解

    在处理资源路径时,需要注意以下几点最佳实践: - 避免使用基于`System.getProperty("user.dir")`的相对路径,因为这可能会在不同环境下导致问题。 - 尽量使用URI形式的绝对路径,便于转换为URI、URL或File对象。 - ...

    J2EE与J2SE路径获取

    除了上述方法之外,还可以通过`System.getProperty()`方法获取一些系统级别的路径,例如当前工作目录(`user.dir`)。 ```java String currentDir = System.getProperty("user.dir"); ``` #### J2SE项目中的路径...

    Java获取工程路径方法详解

    Java获取工程路径方法详解的知识点主要包括了在Java中如何获取工程路径的几种不同方法,以及每种方法的具体应用和示例代码。在开发Java程序时,往往需要获取到当前工程的路径,这在文件读写、资源定位等场景中非常...

    Java或web中解决所有路径问题

    1. 利用Java的类加载机制,通过`XXX.class.getClassLoader().getResource("")`来获取ClassPath。这种方法适用于类位于`WEB-INF/classes`目录下,但如果类被打包到JAR文件中,它将失效。 2. 使用Spring框架的方法,...

    infinispan-core-5.2.11.Final.zip

    类路径扫描(Classpath Scanning)是一项基础但至关重要的技术,它允许开发者在运行时动态发现和加载类路径中的特定类或资源。在Java应用程序中,类路径是查找和加载类文件的路径集合。传统的类加载机制可能无法满足...

    sping applicationcontext中的一些例子demo

    这在类路径之外或者需要特定文件系统位置的配置时使用。 3. **WebApplicationContext**:主要用于Web环境,如Servlet容器(Tomcat、Jetty等),它与Servlet上下文有紧密关联,能获取到HTTP请求的相关信息。 接下来...

    安卓蓝牙打印源码

    - `.classpath`:这是Eclipse项目的类路径配置文件,指示编译器和运行时环境如何找到项目中的库和源代码。 - `ic_launcher-web.png`:应用的图标资源,通常用于Web展示或在Google Play商店中预览。 - `.project`...

    Ubuntu下Android环境搭建方法

    首先,要访问共享资源目录,这是获取所需软件包的途径。通过“ Places -> Computer ”,然后点击“ Go -> Open Location ”在地址栏输入指定的网络路径,例如 `smb://172.16.11.200/ds_wh`。接着输入用户名(如`...

    mysql-connector-java-8.0.11.zip

    开发者通常会将这个JAR添加到Java项目的类路径(ClassPath)中,以便程序能够找到并使用MySQL的数据连接功能。"一个小jar就是官网资源下的比较慢"可能是指从官方下载这个文件的速度较慢,这可能是由于网络环境或者...

    java运行环境配置

    - **安装包获取**:除了官方下载之外,还可以从可靠的第三方资源获取,如网盘分享等。但需注意验证资源的安全性。 ##### 2. 安装过程 - **安装路径**:建议使用默认路径,这样可以避免后续配置环境变量时出现路径...

    db2jcc4.jar

    3. **执行SQL**:获取`java.sql.Statement`或`java.sql.PreparedStatement`对象,然后调用其`executeQuery()`或`executeUpdate()`方法执行SQL查询或更新。 4. **处理结果**:如果执行的是查询,可以使用`ResultSet`...

    spring-core.

    例如,使用`Resource`接口可以方便地获取类路径下的资源: ```java Resource resource = new ClassPathResource("config.properties"); Properties props = new Properties(); props.load(resource.getInputStream()...

    scjp(chap10)

    其中`arg1`和`arg2`可以通过`args`数组在`main`方法中获取。 - **运行时异常**: - 在程序运行过程中可能会抛出异常。 - 应确保程序能够正确处理这些异常,避免程序崩溃。 #### 使用JAR文件中的类 - **JAR文件...

    Ex113:使用内部文件进行锻炼

    3. **使用`ClassLoader`**:除了使用当前类之外,你还可以使用`ClassLoader`来获取资源。这在处理多模块项目或动态加载资源时特别有用: ```java ClassLoader classLoader = Thread.currentThread()....

    Portlet规范之Pluto实现的运用

    2. 在类路径(classpath)下定义资源文件。 3. 在`<portlet>`标签中声明使用该`ResourceBundle`。 这种配置方式允许开发者轻松地为不同的语言环境提供适配,从而提高用户体验。 #### 2. PortletModes与...

    dos命令测试发送邮件jar包

    然后,你需要将JavaMail相关的jar文件(如javamail.jar)放在系统的类路径(classpath)中,或者在执行`java`命令时通过`-cp`或`-classpath`参数指定这个jar文件的位置。 发送邮件的过程通常涉及以下步骤: 1. **...

    Eclipse下搭建Android开发环境的总结.docx

    对于初学者,可能会遇到各种预料之外的困难,但只要遵循正确的步骤,结合网上的资源和社区支持,问题都能迎刃而解。不断学习和实践,才能逐步掌握Android开发技能。希望这个过程能够帮助更多新手顺利入门,少走弯路...

    java入门与加深.pdf

    如果遇到"NoClassDefFoundError",通常是类路径(classpath)设置不正确,需要确保包含当前目录(".")在类路径中。而"Exception in thread "main" java.lang.NoSuchMethodError: main"错误则意味着缺少了主程序入口...

Global site tag (gtag.js) - Google Analytics