我在java企业Web应用程序(使用Weblogic)时遇到此问题:
如何找到位于APP-INF / lib中的jar中的xml(我不知道全名)文件?
我需要读取一个位于jar内的xml文件。我输入jar的名称(例如" NERD")并且必须得到NERD-00.jar并在RNERD-00017.xml内找到(我不知道完整的xml的名称所以我需要使用类似" NERD .xml")的模式。
jar在APP-INF / lib中,我在Web应用程序的战争中调用struts 1动作中的所有内容。 我已经做了一切,但我使用了一个位于web-app文件夹中的jar(参见下面的代码)。
所以问题是如何到达位于APP-INF / lib文件夹中的jar。
Thankx
以下是来自战争中的ACT_PageCreator.java的一些代码,它们可以在" local"环境:
//get the inputstream for jar - THE PROBLEM is HERE: HOW TO GET THIS JAR IF IT IS IN APP-INF/LIB
InputStream istr = this.getClass().getClassLoader().getResourceAsStream(jarName +"-00.00017.jar");
//if the inputstream is ok then I create the inputstream for jar (ZipInputStream) and then I look for *jarName*.xml file
String theString="";
if (null != istr) {
BufferedReader reader = new BufferedReader(new InputStreamReader(istr));
Reader fileReader = new InputStreamReader(istr);
ZipInputStream zin = new ZipInputStream(istr);
ZipEntry ze = null;
Pattern p = Pattern.compile(".*" + jarName + ".*xml");
Matcher m = null;
String absPath = "";
InputStream istr12 = null;
while ((ze = zin.getNextEntry()) != null) {
m = p.matcher(ze.getName());
if (m.find())
{
istr12 = getClass().getClassLoader().getResourceAsStream(ze.getName());
if (istr12 == null)
{
istr12 = Class.forName(nomeClasseInputBs).getClassLoader().getResourceAsStream(ze.getName());
}
//transform to string
StringWriter writer = new StringWriter();
IOUtils.copy(istr12, writer);
theString = writer.toString();
}
}
//do something with theString string