一此不安全的做法:
1. new File(path),这个方法的路径到底在那里取决于调用java命令的起始位置定义在哪里,
tomcat/bin下面的catalina.bat调用了java,所以在tomcat下相对起始位置是tomcat/bin,但是eclipse启动时,起始位置 是eclipse的项目路径。
2.类.class.getClassLoader().getResource("").getPath()
如果使用了此方法,这把决定权交给了类加载器,例如tomcat的类加载是非委托机制的,而weblogic的类加载是委托的。大部分情况下是安全的。
3.类.class.getResource("")
这是个好方法,但局限性在于如果类文件在jar中的话,那么在打jar包时需要将文件夹一起打进去,否则会返回null,jar文件实际上就是zip文件,zip文件中:文件就是文件,文件夹是文件夹,不是关联在一起的,很多开源的jar包就没有把目录打进去只打了classes文件,虽然你能年到目录层次结构,但是调用类.class.getResource("")会返回null.因为文件的目录结构和文件夹本身是两回事。
取得类路径的安全做法:取得类本身在系统中存储文件位置,然后根据包层次一直找到classpath下面:
package com.wbtask;
import java.io.File;
import java.net.URL;
public class UrlUtil {
/**
* 取得当前类所在的文件
* @param clazz
* @return
*/
public static File getClassFile(Class clazz){
URL path = clazz.getResource(clazz.getName().substring(
clazz.getName().lastIndexOf(".")+1)+".classs");
if(path == null){
String name = clazz.getName().replaceAll("[.]", "/");
path = clazz.getResource("/"+name+".class");
}
return new File(path.getFile());
}
/**
* 得到当前类的路径
* @param clazz
* @return
*/
public static String getClassFilePath(Class clazz){
try{
return java.net.URLDecoder.decode(getClassFile(clazz).getAbsolutePath(),"UTF-8");
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
return "";
}
}
/**
* 取得当前类所在的ClassPath目录,比如tomcat下的classes路径
* @param clazz
* @return
*/
public static File getClassPathFile(Class clazz){
File file = getClassFile(clazz);
for(int i=0,count = clazz.getName().split("[.]").length; i<count; i++)
file = file.getParentFile();
if(file.getName().toUpperCase().endsWith(".JAR!")){
file = file.getParentFile();
}
return file;
}
/**
* 取得当前类所在的ClassPath路径
* @param clazz
* @return
*/
public static String getClassPath(Class clazz){
try{
return java.net.URLDecoder.decode(getClassPathFile(clazz).getAbsolutePath(),"UTF-8");
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
return "";
}
}
public static void main(String[] args){
System.out.println(getClassFilePath(UrlUtil.class));
System.out.println(getClassPath(UrlUtil.class));
}
}
分享到:
相关推荐
这通常涉及到更新系统级别的环境变量,或者在应用程序启动时指定适当的类路径。 7. 开发与应用 在实际开发中,开发者会使用 WebSphere MQ 提供的 API 来创建、打开和管理消息队列,发送和接收消息。这些 API 包括...
- **CLASSPATH**:包含 WebSphere MQ Java 类库的路径。 ##### 特殊配置 对于 z/OS 和 OS/390 平台,还需要进行 STEPLIB 配置,以确保能够正确加载必要的共享库。 #### 五、核心知识点详解 ##### WebSphere MQ ...
8. **Eclipse工程配置**:为了运行这个项目,你需要在Eclipse中创建一个Java工程,并将IBM MQ的JAR文件添加到项目的类路径中。此外,确保你的系统已经安装了IBM MQ客户端,这样项目才能找到所需的库文件。 9. **...
Java监控WebSphere MQ 7.5中间件信息主要涉及到的是如何使用Java编程语言与IBM的WebSphere MQ消息中间件进行交互,以便收集、分析和管理MQ的运行时信息。WebSphere MQ,以前被称为MQSeries,是IBM提供的一种企业级的...
这段代码展示了如何通过`System.getProperty()`方法获取各种类路径信息,这对于调试类加载问题非常有用。 #### 总结 理解和正确配置WebSphere Application Server V7中的类装入器对于确保应用程序的稳定运行至关...
### IBM WebSphere MQ Java编程(中文版)知识点详解 #### 一、概述 IBM WebSphere MQ 是一款业界领先的消息中间件产品,它提供了一个可靠、高效的信息传递平台,支持多种平台之间的消息通信。本文档主要介绍了如何...
WebSphere是一款由IBM开发的企业级应用服务器,是Java EE(现在称为Jakarta EE)平台的实现,用于构建、运行和管理企业级Web应用程序。本教程将深入探讨WebSphere的安装、配置以及WEB应用的部署过程。 一、...
开发人员只需将这个lib文件夹添加到项目的类路径(classpath)中,就可以在代码中使用IBM WebSphere MQ的API了。 使用IBM WebSphere MQ的Java API,可以实现以下功能: - 创建和打开MQ队列。 - 发送和接收消息。 - ...
通常情况下,建议选择“自定义”以获得更多控制权。 - 配置安装路径,一般默认即可,除非有特殊要求。 - 设置管理节点和管理服务器的详细信息,例如:节点名称、管理服务器主机名(默认为 `127.0.0.1`)、管理...
WebSphere不仅支持Java EE标准,还提供了丰富的集成工具和服务,使得企业能够快速响应市场变化,提高业务灵活性和效率。 ### IBM WebSphere的关键特性与功能 #### 软件页面资源指南 IBM WebSphere的官方网站提供...
7. **JAXB绑定**:如果使用JAXB进行XML到Java对象的转换,确保JAXB上下文工厂和绑定文件已正确配置,并且在WebSphere的类路径中可用。 8. **错误处理**:处理CXF和WebSphere之间的异常,例如,WebSphere可能会捕获...
接着,选择实施类型,并输入数据库驱动的类路径信息,包括驱动的完整路径,确保路径正确无误,避免末尾的斜杠。最后,保存配置以供后续使用。 接下来是配置数据源。数据源是应用程序获取数据库连接的接口,它通常...
在“类加载器”选项中,将下载的JDBC驱动jar文件(例如`sqljdbc4.jar`)上传到WebSphere的类路径,通常是在`WEB-INF/lib`目录下。 6. 测试数据源连接,确保配置正确无误。 7. 最后,保存并激活更改,使新的数据源...
- 配置类路径: 应用程序服务器 > server1 > 进程定义 > Java虚拟机中配置类路径,通常需要加入`js.jar`等必要的库文件。 - 配置JVM启动参数: 在一般JVM变量编辑框中填入必要的参数,如`-Dfile.encoding=GBK -D...
- 如果类路径中包含环境变量,如`${ORACLE_JDBC_DRIVER_PATH}`,则需要在“环境->管理WebSphere变量”中定义相应的环境变量。 - 设置环境变量的值,例如将Oracle的JDBC驱动放在`d:\jdbcdriver`目录下,则环境变量...
- **类路径配置**:在应用程序服务器 > server1 > 进程定义 > Java 虚拟机中配置类路径,例如加入 js.jar 文件。 - **启动参数配置**:在一般 JVM 变量中添加启动参数 `-Dfile.encoding=GBK -Ddefault.client....
2. **Oracle JDBC驱动**:为了在Websphere中使用Oracle数据库,需要将Oracle的JDBC驱动jar包路径设置到环境变量`ORACLE_JDBC_DRIVER_PATH`中,这样Websphere才能识别并加载驱动。 3. **JDBC提供程序**:在Websphere...
2. RichFaces 3.10的库文件:通常包含jar文件,这些文件将被添加到项目的类路径中。 3. RichFaces 3.10 Demo应用程序:这是一个包含源码和配置文件的示例项目,展示了RichFaces组件的用法。 部署步骤如下: 1. **...
- 需要下载Oracle JDBC驱动(ojdbc.jar)并将其添加到WebSphere的类路径中。 - 可以将jar文件放到WebSphere的`lib`目录下,或在管理控制台的“类加载器”部分进行配置。 3. **创建JNDI数据源**: - 回到管理...