获取用于执行Web应用程序的类路径条目

时间:2011-03-11 11:31:50

标签: java web-applications classpath

我需要阅读当前网络应用程序的CLASSPATH条目。在CLASSPATH我有许多具有相同名称的文件。我想检查它们在classpath中出现的位置。例如:path:\file.txt;path2:\file.txt...

感谢您的帮助。

亲切的问候 塞巴斯蒂安

4 个答案:

答案 0 :(得分:6)

试试这些:

// get the compact classpath value
String path = System.getProperty("java.class.path");

// the character : on windows and ; on unixes
String separator = System.getProperty("path.separator");

// the character \ on windows and / on unixes
String fileSep = System.getProperty("file.separator");

您需要separatorfileSep因为:\高度依赖系统。

答案 1 :(得分:4)

使用上面的sebastian回答,我制作了这段代码,这对我来说很有用。

ClassLoader c=getClass().getClassLoader();
logmsg("c="+c);
URLClassLoader u=(URLClassLoader)c;
URL[] urls=u.getURLs();
for (URL i : urls) {
    logmsg("url: "+i);
}

它给出了这个结果:

classpath=/dd/apache-tomcat-7.0.29/bin/bootstrap.jar:/dd/apache-tomcat-7.0.29/bin/tomcat-juli.jar
c=WebappClassLoader
  context: /xxx
  delegate: false
  repositories:
    /WEB-INF/classes/
----------> Parent Classloader:
org.apache.catalina.loader.StandardClassLoader@35c0e45a

url: file:/DT/DEV/dev/mko/apache-tomcat-7.0.29/webapps/xxx/WEB-INF/classes/
url: file:/DT/DEV/dev/mko/apache-tomcat-7.0.29/webapps/xxx/WEB-INF/lib/commons-codec.jar
url: file:/DT/DEV/dev/mko/apache-tomcat-7.0.29/webapps/xxx/WEB-INF/lib/commons-fileupload.jar
url: file:/DT/DEV/dev/mko/apache-tomcat-7.0.29/webapps/xxx/WEB-INF/lib/commons-logging-api.jar
url: file:/DT/DEV/dev/mko/apache-tomcat-7.0.29/webapps/xxx/WEB-INF/lib/commons-logging.jar
url: file:/DT/DEV/dev/mko/apache-tomcat-7.0.29/webapps/xxx/WEB-INF/lib/freemarker.jar
url: file:/DT/DEV/dev/mko/apache-tomcat-7.0.29/webapps/xxx/WEB-INF/lib/h2.jar
url: file:/DT/DEV/dev/mko/apache-tomcat-7.0.29/webapps/xxx/WEB-INF/lib/js.jar
url: file:/DT/DEV/dev/mko/apache-tomcat-7.0.29/webapps/xxx/WEB-INF/lib/log4j-1.2.8.jar

答案 2 :(得分:2)

通常,您的文件应该在WEB-INF / lib和WEB-INF / classes中 - 就是这样。什么是神秘的?

答案 3 :(得分:0)

基于Rok的回答,如果您使用Eclipse,当您在断点时在“视图”选项卡中运行此代码,您将在文件中获取类路径

StringBuilder sb = new StringBuilder();
java.net.URL[] urls=((java.net.URLClassLoader)getClass().getClassLoader()).getURLs();
for (java.net.URL u : urls) {
  sb.append(u+"\n");
}
org.apache.commons.io.FileUtils.writeStringToFile(new java.io.File("/tmp/classpath"), sb.toString());