1

我正在尝试从另一个项目的类文件中获取输入流。

我正在使用日食。输出文件夹是:

mycurrentproject/WebContent/WEB-INF/classes.

导出库文件夹是:

mycurrentproject/WebContent/WEB-INF/lib.

当我打印“java.class.path”时,我得到了这个:

D:\apache-tomcat-7.0.42\bin\bootstrap.jar;D:\apache-tomcat-7.0.42\bin\tomcat-juli.jar;

我的WINDOWS系统CLASS PATH环境变量是:

.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;D:\work\workspace\myjar

我在包action中获取资源流的代码是:

classfilePath = "/cc/Person.class";
InputStream isInputStream = ModifyMethodTest.class.getResourceAsStream(classfilePath);

action在“mycurrentproject/WebContent/WEB-INF/classes”中输出。action.jar在“mycurrentproject/WebContent/WEB-INF/lib”中导出。

cc/Person.class“mycurrentproject/WebContent/WEB-INF/classes”中,我得到了正确的结果。在cc/Person.class“mycurrentproject/WebContent/WEB-INF/lib”或“D:\work\workspace\myjar”中时。isInputStream为空。我想从另一个项目中的类文件中获取输入流。类文件可能在文件夹中,也可能在目标项目文件夹中的 jar 文件中。该项目中应该有许多类或 jar 文件。怎么做?现在,为了简单起见,我如上所述测试我的想法以放入cc/Person.class“D:\work\workspace\myjar”。但它也失败了。谁有类似的经验或建议?谢谢。

编辑:

classfilePath ="file:D:/work/workspace/myjar/cc/Person.class"; 
URL[] urls = new URL[] { new URL(classfilePath) }; 
URLClassLoader ucl = new URLClassLoader(urls); 
InputStream isInputStream = ucl.getResourceAsStream(classfilePath);

这里 isInputStream 仍然为空。getResourceAsStream() 的参数是String name. 可能是什么?类似相对路径的东西?有参考吗?

编辑2:

它适用于以下代码:

String Path1 = "file:D:/";
String Path2 = "work/workspace/myjar/cc/Person.class";

URL[] urls = new URL[] { new URL(Path1) }; 
URLClassLoader ucl = new URLClassLoader(urls); 
InputStream isInputStream = ucl.getResourceAsStream(Path2);
4

1 回答 1

1

使用URLClassLoader. 一旦你建立了它,调用:

getResourceAsStream("/work/workspace/myjar/cc/Person.class")

对于InputStream.

于 2013-09-22T11:22:08.213 回答