我需要阅读当前网络应用程序的CLASSPATH
条目。在CLASSPATH
我有许多具有相同名称的文件。我想检查它们在classpath中出现的位置。例如:path:\file.txt;path2:\file.txt...
。
感谢您的帮助。
亲切的问候 塞巴斯蒂安
答案 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");
您需要separator
和fileSep
因为:
和\
高度依赖系统。
答案 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());