我需要为当前Web应用程序读取CLASSPATH
条目。在CLASSPATH
我有很多这个同名的文件。我想检查他们在classpath中出现的位置。例如:path:\file.txt;path2:\file.txt...
。获取用于执行Web应用程序的类路径条目
谢谢你的帮助。
亲切的问候 塞巴斯蒂安
我需要为当前Web应用程序读取CLASSPATH
条目。在CLASSPATH
我有很多这个同名的文件。我想检查他们在classpath中出现的位置。例如:path:\file.txt;path2:\file.txt...
。获取用于执行Web应用程序的类路径条目
谢谢你的帮助。
亲切的问候 塞巴斯蒂安
尝试这些:
// 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
因为:
和\
是高度依赖于系统的。
'字符串path = System.getProperty(“java.library.path”);'这不会给我所寻找的。 – sebastian 2011-03-11 11:48:59
已编辑。改为使用'java.class.path'。 – vbence 2011-03-11 11:51:46
我也试过了。 'String path = System.getProperty(“java.class.path”);''''''''''''''''''''''''''''''假设它返回env变量而不是变量,web应用程序将使用它来查找资源。因为我得到的地方不包含文件,文件将被创建。 – sebastian 2011-03-11 11:54:44
一般情况下,你的文件应该是在WEB-INF/lib和WEB-INF/classes中 - 这是它。什么是神秘?
你也可以在java/endorsed和tomcat/lib中有优先权的东西:) – extraneon 2011-03-11 11:46:54
我现在可以执行'System.getProperty(“java.class.path”)'给我一个控制台应用程序或测试一个不错的String与;分开的条目。我想为web应用程序获得这个。我假设在Web应用程序中生成类路径,并且'System.getProperty(“java.class.path”)'不会给我我想要的东西。我尝试使用web应用程序,我只有2个条目。随着控制台应用程序或测试我得到许多更多。 – sebastian 2011-03-11 11:48:17
使用上面的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:
[email protected]
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
类似:http://stackoverflow.com/questions/3923129/get-a-list-of-resources-from-classpath-directory – 2011-03-11 11:36:40