我在tomcat的webapps下建了一个myapp这个程序,并在其web-inf下的class中有一个MyClass类,我想在这个MyClass中得到这样的路径:e:\tomcat5\webapps\myapp\这样的路径,请问怎样实现这个MyClass是这样一种结构public class MyClas{ public static void main(String[] args){ 这里怎样写才可以得到这个e:\tomcat5\webapps\myapp\???
}}
}}
解决方案 »
- [非常郁闷]为什么我这个界面类,编译没问题.执行的时候报一大堆错误.看不懂..
- ArrayList是如何返回数组中元素的的
- 新手提问
- 求救:急,解决问题马上给分。。。。关于servlet自动定时器的问题,,,下面是我的sevlet类,问题是它为什么在每次服务器开启的时候会执
- 急问大侠关于JAVA调用动态库的问题
- 关于JAVA GC垃圾回收机制的疑问
- 问一个很弱的问题,怎么向JComboBox的下拉列表里面添加数据项啊,最好有代码,谢!
- JReport问题,up也给分。
- 金蝶Apusic应用服务器V2.0 Beta 1 版隆重登场!
- java 入门级问题,希望有人点拨一下,不胜感激
- 求一软件工程管理工具(比对两个.java代码有何不同)
- 刚建的一个JAVA交流群~~欢迎喜欢JAVA或JAVA高手进~~!!!!!
ClassLoader肯定知道它从哪里load了一个class,问题是用户怎么获得。
只能通过class本身的方法getClass().getResource("/").toString();
new File(".");然后自己再substring()处理一下吧。
new File(".")应该是当前工作目录,不是被加载class所在的目录吧。
public class MyClass{ public static void main(String[] args){
System.out.println(new MyClass().getClass().getResource("/"));
}
}
System.setProperty("mypath",Servlet.getSevletConfig().getSevletContext().getRealPath("/"))
然后在MyClass中System.getProperty("mypath")来得到,但是如果多个web content,则会覆盖这个mypath的。
private static String webRoot="";
static{
String className = "org.apache.commons.dbcp.BasicDataSource";
String classNameUrl="/org/apache/commons/dbcp/BasicDataSource.class";
String temp=null;
int i = 0;
try {
Class.forName(className);
java.net.URL classUrl = FilesUtil.class
.getResource(classNameUrl);
temp = classUrl.getPath();
temp = URLDecoder.decode(temp);
//如果是windows则从第六个字符开始,否则从第五个字符开始
if ("Win".equalsIgnoreCase(System.getProperty("os.name").substring(
0, 3))) {
i = 6;
} else {
i = 5;
}
webRoot = temp.substring(i, temp.indexOf("WEB-INF") - 1);
} catch (Exception e) {
System.err.println("取得webRoot时出错:");
webRoot = "";
}
}
/**
* 取到目录为webRoot
*
* @return
*/
public static String getWebRoot(){
return webRoot;
}
}原理是类似FilesUtil.class.getResource(classNameUrl);取得放在此工程的class下面的文件URL
org.apache.commons.dbcp.BasicDataSource是DBCP的jar的一个类(你可以换成你的工程必加载的一个类)如取tomcat的路径,可以用/org/apache/catalina/loader/Reloader.class这个类,这个是tomcat必加载的类
谢谢了!